// Я пытаюсь прочитать файл внутри функции, вызывая функцию в main и передавая имя файла в качестве аргумента. Это дает ошибку при открытии файла. Но то же самое отлично работает, когда я передаю имя файла непосредственно файл («имя_файла»). Почему это так? Заранее спасибо.
#include<string>
#include<fstream>
void parse(string file_name)
{
ifstream file("file_name"); //opens file
if (!file)
{
cout<<"Cannot open file\n";
return;
}
cout<<"File is opened\n";
file.close(); //closes file
}
int main()
{
parse("abc.txt"); //calls the parse function
return;
}
Удалить цитаты вокруг file_name
и убедитесь, что файл, используемый для ввода, присутствует в текущем рабочем каталоге (папке, в которой находится ваш исполняемый файл). Кроме того, если вы не используете c++11
необходимо преобразовать строку в char*
как это :
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
void parse(string file_name)
{
ifstream file(file_name.c_str()); //opens file
if (!file)
{
cout<<"Cannot open file\n";
return;
}
cout<<"File is opened\n";
file.close(); //closes file
}
int main(){
string st = "abc.txt";
parse(st); //calls the parse function
return 0;
}
Удалить цитаты вокруг "file_name"
, Когда вы цитируете, вы командуете ifstream
прочитать файл в рабочем каталоге называется file_name
, Также убедитесь, что abc.txt
находится в рабочем каталоге, который обычно является каталогом, в котором находится ваш исполняемый файл.
#include<string>
#include<fstream>
void parse(string file_name)
{
ifstream file(file_name.c_str()); //opens file (.c_str() not needed when using C++11)
if (!file)
{
cout<<"Cannot open file\n";
return;
}
cout<<"File is opened\n";
file.close(); //closes file
}
int main()
{
parse("abc.txt"); //calls the parse function
return;
}