正如标题所说,有没有办法将文件/文件名的路径传递给函数中的参数?
我已经编写了一个用于在C ++中将.txt文件打印到屏幕上的简短代码,但是我没有将它作为一个自己的函数,我可以调用它来代替main()中的所有代码将文件的文件名作为唯一的输入参数打开。
基本上,函数的开头看起来像
void printFileToScreen()
{
ifstream fin;
char c;
fin.open("FILE_TO_OPEN.txt", ios::in);
blablabla
}
现在有什么方法可以在调用函数时传递“FILE_TO_OPEN.txt”吗?
我试过
void printFileToScreen(string str)
{
ifstream fin;
char c;
fin.open(str, ios::in);
blablabla
}
我将这个函数称为printFileToScreen("FILENAME.txt")
,但没有运气,所以我不知道该怎么做。
希望任何人都可以提供帮助:)
答案 0 :(得分:3)
不幸的是,iostream函数处理const char*
类型而不是std::string
(iostream函数是独立于STL开发的)。您可以使用std::string::c_str()
获取const char*
:
fin.open(str.c_str(), ios::in);
答案 1 :(得分:2)
作为一般设计规则,我不会将文件名传递给被调用的函数。我会传递已经打开的std::istream
对象来读取。这允许您在函数中执行打印工作,并执行打开文件和处理另一个文件中不存在的文件的工作。这样可以将std::cin
传递给您的功能!
答案 2 :(得分:2)
尝试将您的功能更改为:
void printFileToScreen(const string &str);
//If you pass a const char*, a string will be constructed
或者这个:
void printFileToScreen(const char *);
您编写的函数需要通过值传递std :: string的实例。
答案 3 :(得分:0)
没关系,经过一些尝试和失败,我发现我需要传递一个字符指针,而不是一个字符串。 :)
答案 4 :(得分:0)
当然,您可以将文件名作为函数参数传递。如果有疑问,请传递“const char *”而不是字符串。我应该工作。