gpt4 book ai didi

C++:无法使用字符串流操作打开文件

转载 作者:太空宇宙 更新时间:2023-11-04 16:17:43 25 4
gpt4 key购买 nike

我正在编辑现有的 C++ 代码,以便它使用 stringsteam 打开多个文件。我有一个整数从 1 到 7 的循环,我需要打开 7 个文件。这些文件被命名为 PMAP1.txt ... PMAP7.txt。我正在尝试以这种方式打开它:

            ifstream precipfile;
int j = 0;
stringstream ss;
string FileName;

for(j=1;j<6;j++){

ss <<"PMap" << j <<".txt" << endl;
FileName = ss.str();
precipfile.open(FileName.c_str(),ios::in);

if( !precipfile.good() )
ReportFatalError( "Unable to find or open precipfile" );
}

由于某种原因这不起作用。它返回“无法找到或打开 precipfile”。但如果我只需直接使用一个文件名即可打开一个文件。如:

                    string FileName = ( "PMap.txt" ); 
precipfile.open(FileName.c_str());

这有效。请帮忙!

最佳答案

在你的循环中你没有重置 stringstream 对象

ss <<"PMap" << j <<".txt" << endl;

因此,您可以在不删除之前添加的内容的情况下,继续向字符串流中添加内容。将循环中的上述行替换为以下两行,以在每次迭代时正确清除 stringstream

ss.str("");
ss <<"PMap" << j <<".txt" << endl;

这就是代码只工作一次的原因 - 第一次清除流,但后续迭代包含您在之前迭代中添加的所有字符。

关于C++:无法使用字符串流操作打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20731199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com