为什么c_str在这个open(filename)情况下不起作用

时间:2013-11-26 15:33:53

标签: c++ string file-io std c-str

我认为我理解在打开文件时必须将std :: string转换为* char,但我遗漏了一些东西。它编译好但不打开。尝试了许多变化,但到目前为止只对文件中的名称进行硬编码工作:

//  const char * cEMN = cCCA.get_EMNfn().c_str();
//  femn.open(cEMN);  fails
//  femn.open("file-foo.emn"); works

string stdEMN;
stdEMN = cCCA.get_EMNfn();
femn.open(stdEMN.c_str());  // fails

if(!femn)
{
    cout << "Open of Original EMN file failed\n";
    cout << "EMN file: " << cCCA.get_EMNfn() << endl;
    cout << "Press any key to exit" << endl;
    ch = getchar();
    return 1;
}

1 个答案:

答案 0 :(得分:3)

我发现它们的事实是:

femn.open("file-foo.emn");

成功。但

femn.open(stdEMN.c_str());

失败。

明显的结论是stdEMN.c_str()评估的字符串与"file-foo.emn"不同。