C++ 打开文件名为存储变量的文件
我有一个类,用于存储用户提供的文件名:C++ 打开文件名为存储变量的文件,c++,input,stream,C++,Input,Stream,我有一个类,用于存储用户提供的文件名: 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(c
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从'class std::basic_string,class std::allocator>'转换为'const 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;
}
想法枯竭还有其他方法可以打开这条河吗
molbdnilo-我想你已经了解了一些事情(见下文)
好的,我在后面添加了两行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;
cout您没有正确分配字符串!字符串变量不应分配有=
运算符。是用于处理字符串的引用
完成任务的方法有很多,这里有一种:
#包括
...
strcpy(ccana::EMNfn,s)//而不是ccana::EMNfn=s代码>
如果不检查链接并使用正确的方法处理字符串,这可能会起作用
干杯您确定字符串相同吗?特别是空白可能很难识别。如果您使用IDE或调试器启动应用程序,则工作目录可能与可执行文件的位置不同。您应该学会使用。你正在制作一堆不必要的字符串副本。这些是C++代码> STD::String S,而不是C字符串。这个链接非常好,但我更困惑了。我的所有声明都是用C++方法“字符串变量”,并且根据链接复制字符串是C++,就像我已经用“=”符号做的一样。这让我相信这与我使用这种方法时遇到的编译错误有关:“code”femn.open(cCCA.get_EMNfn());”代码“我得到一个编译错误C2664…无法将参数1从”class std::basic_string,class std::allocator>”转换为“const char*”
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;