将文件/文件名的路径作为参数传递给在C ++中将文件打印到屏幕的函数

时间:2010-02-01 09:01:43

标签: c++

正如标题所说,有没有办法将文件/文件名的路径传递给函数中的参数?

我已经编写了一个用于在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"),但没有运气,所以我不知道该怎么做。

希望任何人都可以提供帮助:)

5 个答案:

答案 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 *”而不是字符串。我应该工作。