c++程序突然停止写入文件
c++ program suddenly stopped writing to file
我几乎没有c++编程经验,我编写了一个快速程序来查找长链接列表中的链接组。
我一直在使用这个程序在过去的2天,它工作得很好(我猜效率不高,但它工作)。但是它突然停止向文件写入。我制作了一个新文件,并更改了程序中的文件名,以检查是否腐败,但它仍然不起作用。我还有一个相同的程序,在一个单独的链接列表中搜索,该程序仍然工作。
代码如下:我已经让程序通过使用while循环检查字符串来写入文件,而不是使用for循环
#include <iostream>
#include <fstream>
#include <string>
int main()
{
std::string STRING;
std::string findString;
std::string line;
std::ifstream infile;
std::cout<<"Find String: ";
std::getline(std::cin, findString, 'n');
infile.open("old.rtf");
std::ofstream returnFile("return.txt");
int a = 0;
std::string previousLine = "";
while(a < 1)
{
std::getline(infile, STRING);
while(STRING != previousLine && STRING.find(findString) != std::string::npos)
{
previousLine = STRING;
returnFile<<STRING<<"n";
std::cout<<STRING<<std::endl;
}
}
infile.close();
std::system("pause");
return 0;
}
我在mac(运行mountain lion)上使用g++编译这个
谢谢你的帮助!
似乎这个问题可能与无限循环有关。
int a = 0;
std::string previousLine = "";
while(a < 1)
{
// a needs to be incremented in here or it will loop forever!
}
我解决了我的问题(得到了许多回答我的人的帮助)。
在我最初的问题中,我使用以下代码循环遍历列表:
while(a < 1)
{
std::getline(infile, STRING);
if(STRING != previousLine && STRING.find(findString) != std::string::npos)
{
previousLine = STRING;
returnFile<<STRING<<'n';
std::cout<<STRING<<std::endl;
}
}
我可以让程序写入文件,通过改变里面的if语句为while语句。
while(a < 1)
{
std::getline(infile, STRING);
while(STRING != previousLine && STRING.find(findString) != std::string::npos)
{
previousLine = STRING;
returnFile<<STRING<<"n";
std::cout<<STRING<<std::endl;
}
}
为了解决出现的下一个问题(无限循环),我再次将代码更改为:
while(!infile.eof())
{
std::getline(infile, STRING);
if(STRING != previousLine && STRING.find(findString) != std::string::npos)
{
previousLine = STRING;
returnFile<<STRING<<"n";
std::cout<<STRING<<std::endl;
}
}
旧代码中的while语句连续为false,因为它检查文件中的每行是否有特定的字符串。循环继续进行的唯一原因是外部while循环从未为假。为了解决这个问题,我更改了外部while循环,以便它检查文件的结束,一旦所有操作完成,循环就结束了。
再次感谢你的回答。Stack Overflow总是非常有用的!
相关文章:
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 使用mongocxx驱动程序时包含头文件问题
- 使用VerQueryValue检索应用程序的文件描述
- 编译多文件C++程序
- Visual C 32位整数从文件到8位字符到文件 - 程序在某些整数上崩溃
- 文件程序不会停止显示垃圾值
- 简单的QT从文本文件程序中读取不编译
- 从文件 C++ 程序读取停止工作
- C++ - 需要有关如何正确设计多文件程序的建议
- C++文件 I/O - 程序挂起
- 简单的文件 I/O 程序C++
- 有一个简单的程序文件/程序文件(x86)指令的c++在windows
- 配置文件c++程序在perf
- 从同一文件夹读取文件(c++程序)
- 单文件程序的未定义虚函数表
- 无法用多文件程序创建SDL线程
- 我的第一个多文件C++程序不断给我错误消息
- 配置文件C++程序基于墙上的时钟时间与英特尔Vtune放大器
- c++复制文本文件程序使用头文件