在c ++中打开ifstream时遇到一个奇怪的问题。 在函数内部我正在读取一个包含标签的文件(这很好),并且使用这个标签我构建了一个包含完整文件名的字符串流。
ifstream infile1;
infile1.open("label.txt");
int a;
infile1 >> a;
stringstream stream1;
stream1 << "./Path1/filename_" << a << ".txt" ;
string pathfile(stream1.str());
之后我需要将流的内容传递给函数作为字符串的引用,以便打开ifstream对象。这个函数的第一行看起来像这样:
void Function(string &pathfile, ..., ...){
ifstream inFile2;
inFile2.open(pathfile.c_str());
if(inFile2.fail()) cerr << " Error opening file " << endl;
...
}
此过程不起作用,我不断收到“打开文件错误”消息。我试图在两个函数中打印出stringstream和string的内容,它们都对应于所查找的文件名。
奇怪的是,在我没有通过stringstream
的情况下,该过程正常,这意味着当我手动写入string
确切的文件路径并将字符串传递给function1
时。 / p>
string filepath2 = "./Path1/filename_1.txt";
function1(filepath2,...,...);
我无法弄清楚流提供什么样的问题。