我已经在那里我存储用户提供了一个文件名类:打开其中的文件名存储变量文件
string EMNfn; // IDF file EMN name
// IDF file EMN name
void CcaAna::put_EMNfn(string s)
{
CcaAna::EMNfn = s;
}
string CcaAna::get_EMNfn()
{
return EMNfn;
}
然而,当我尝试打开该文件,我知道它的存在在我与后续的使用当前目录:
femn.open(cCCA.get_EMNfn());
我得到一个编译错误C2664 ...不能转换从参数1“类的std :: basic_string的,一流的std ::分配器>”到“常量char *'
当我尝试使用:
femn.open(cCCA.get_EMNfn().c_str());
它编译但出游我的错误代码:
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;
}
然而,当我直接键入它寄托都正常工作:
femn.open("262-003841-7-23.emn");
运行的想法还有另一种打开流的方法吗?
molbdnilo - 我认为你是对的东西(见下文)
OK我加两条COUT线,我已经包含下面的代码后输出:
cout << "EMN file: " << cCCA.get_EMNfn() << endl;
// THIS WORKS
// femn.open("262-003841-7-23.emn");
femn.open(cCCA.get_EMNfn().c_str());
// femn.open(cCCA.get_EMNfn());
cout << "this works: " << "262-003841-7-23.emn" << endl;
cout << "*****" << cCCA.get_EMNfn() << "*****" << endl;
OUTPUT:
处理用户输入的文件...
EMN文件: “262-003841-7-23.emn”
这个工程:262-003841-7-23.emn
*****“262-003841-7-23.emn”*****
原始EMN文件打开失败
EMN文件:“262-003841-7-23.emn”
按任意键退出键
我所看到的是存储的字符串有“围绕它。有没有C++的方式来删除这些?
你确定字符串是否相同?特别是空白区域可能非常难以发现。 – molbdnilo
如果使用IDE或调试器启动应用程序,工作目录可能与可执行文件的位置不同。 –
您应该学会使用[参考资料](http://en.cppreference.com/w/cpp/language/reference)。你正在制作大量不必要的字符串副本。 –