C++:无法使用字符串流操作打开文件
C++: Cannot open files with stringstream operation
我正在编辑现有的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" );
}
由于某种原因,这不起作用。它返回"无法找到或打开沉淀文件"。但是如果我只需直接使用一个文件名打开一个文件即可工作。喜欢:
string FileName = ( "PMap.txt" );
precipfile.open(FileName.c_str());
这行得通。请帮忙!
在循环中,您不会重置stringstream
对象
ss <<"PMap" << j <<".txt" << endl;
因此,您可以继续将内容附加到字符串流中,而不会删除先前添加的内容。将循环中的上述行替换为以下 2 行,以便在每次迭代时正确清除stringstream
。
ss.str("");
ss <<"PMap" << j <<".txt" << endl;
这就是为什么代码只工作一次 - 第一次清除流,但后续迭代它包含您在先前迭代中添加的所有字符。
您的循环太小 - 将其更改为 for (j = 1; j <= 7; j++)
。
相关文章:
- C++二进制文件 I/O 操作速度变慢.数据库如何处理二进制文件?
- RPN计算器使用头文件进行计算操作和堆栈;用于堆栈的矢量
- 我是否缺少<实验/文件系统>移动操作?
- C++ 使用读取目录更改监视文件更改W不触发所有操作?
- 在链接的程序集文件中,我想从 c++ 调用代码访问变量.是否可以在不触发访问冲突的情况下执行此操作?
- 程序未正确执行文件操作
- 尝试在 QT 中控制文件-QMenu 操作
- 打开一个文件,修改每个字符,然后执行反向操作不输出原始文件
- 如何在我的进程中运行的二进制文件中注册操作和内核
- exe文件不被识别为内部或外部命令,可操作的程序或批处理文件在C++
- C++程序在执行文件操作时在Windows与Linux上运行得慢得多?
- 如何处理对生成文件中依赖项的重命名操作?
- 使用文件操作的 XMLFile 解析
- 从文件中读取运算符并执行操作C++
- 为什么我的文件/目录操作在Windows上工作正常,但在Linux上不能
- 使用函数操作文件
- 试图在c++中操作文件
- 除了 Boost 的文件系统之外,是否有一个好的C++库来操作文件和目录?
- C++:操作文件资源
- Qt Creator在使用其C++编辑器操作文件时崩溃