为什么没有c_str()函数ifstream / ofstream不起作用?

时间:2017-03-06 15:48:24

标签: c++ ifstream ofstream

基本上,我所拥有的是2个带有输入/输出文本文件名称的常量字符串变量和2个将这些字符串作为参数的函数。一个函数用于读取第一个文件,而另一个函数用于写入第二个文件。

常数:

const string duom = "U2.txt";
const string rez = "rez.txt";

其中一项功能:

void fileWrite(const string fn,int kieknuvaziavo,int kiekpristate,string paskutinis)
{
ofstream fout(fn.c_str());
fout << kiekpristate << " " << kieknuvaziavo << " " << paskutinis;
fout.close();
}

如果我要从此行.c_str()删除ofstream fout(fn.c_str());,我会收到此错误:

no matching function for call to 'std::basic_ofstream<char>::basic_ofstream(const string&)'|

这是主要功能的一部分:

int main()
{
    int kiekpristate = 0;
    int kieknuvaziavo = 0;
    string paskutinis;
    fileWrite(rez,kieknuvaziavo,kiekpristate,paskutinis);
    return 0;
}

现在,如果我要采用另一条路线,而不是使用文本文件路径的参数,请自行在ofstream中编写,如下所示:ofstream fout("rez.txt");它可以正常工作。我的问题是,为什么每当我使用函数参数传递该变量时我都需要c_str()函数?这个功能有什么作用?不是fn等于"rez.txt"吗?

0 个答案:

没有答案