void EnterFileName1(const char*std)
Чтоб не было недомолвок. Ты выбрала для имени переменной имя std. Значит название пространства имен std у тебя функции перекрыто. И компилятор в этом коде
std::string name;
std::cin >> name;
std::ifstream ifs(name.c_str());
Будет очень сильно ругаться. Так как в типе char * нету методов и тип char * не является пространством имен, со своей зоной видимости.
Название входных параметров функции стараются выбирать "самодокументируешиеся". Например, если ты хочеш передать в функцию название файла. То логично выбрать для названия переменной fileName. Как другой вариант, в основном встречается в классах. Входной параметр функции в рабочей группе разработчиков часто применяют стандартизированные названия. Например orig или val.
Сушествует правило программирование, где открыл, там желательно и закрыть. Так что, открывать поток, как показала ты, крайне не желательно. Его нужно отрывать по мере необходимости. А в функции, просто обойтись запросом от пользователя его имени. Примерно будет выглядеть так
std::string EnterFileName(void) {
std::string res;
std::cin >> res;
return res;
}