C++逐行读取文本文件的操作中途停止
C++ reading text file line by line stops partway through
我有一个16900000行的文件,每行包含10个数字(int和float的混合)。我试图逐行读取这个文件,稍微修改每一行,然后写入一系列新文件。下面的代码在运行Windows Visa的笔记本电脑上运行,但当我在运行Windows 7的桌面上运行它时,输出文件并不包含输入文件中的所有数据。输出文件中的行数从2500到40000不等。
我已经注释掉了所有的处理和对文件的写入,每100行就向cout写入一行,最后一行打印并不是文件的最后一行。
// skipping code prior to the loop
// only including minimal code that reproduces the problem
ifstream infile((srcdir+filename).c_str());
string line;
int lcount=0;
while(getline(infile,line)){
if(line.find("#")==string::npos){
lcount++;
if(lcount%100==0){
printf("Generating tiles for %s: %d lines processedn",filename.c_str(),lcount);
}
}
}
问题:
是否存在可能溢出的最大缓冲区大小?
有人能看到我的代码有问题吗?
这在Windows Vista上可以正常工作,但在Windows 7上不能正常工作,有什么原因吗?
在您的问题中,信息很少。但我将把我的猜测放在这里:
我不认为lcount
在代码中的正确位置递增。只有当'#'
不在line
中时,它才会递增(我猜这是某种注释)。但从(o包含)'#'
开始的一行也必须被计数。所以你的代码应该是:
while(getline(infile,line)){
lcount++; // Increment every time.
if(line.find("#")==string::npos){
if(lcount%100==0){
printf("Generating tiles for %s: %d lines processedn",filename.c_str(),lcount);
}
}
}
另一方面,你应该激活isstream异常,看看发生了什么,看看这里怎么做。
当我试图创建一个最小的完整程序来重现问题时,我发现了罪魁祸首。
我正试图用我公司正在使用的密钥锁加密狗来保护可执行文件。当我删除对加密狗的检查时,整个文件都被读取了。
相关文章:
- 如何在c++中从文本文件中逐行读取整数
- 打印逐行存储的文本文件
- 如何逐行读取文件,每行中的内容都用空格分隔并将其写入新文件中
- C++如何将字符串逐行转换为双精度
- 在 c++ 中逐行阅读字符串,不要以空格停止
- 使用 QT 逐行读取 JSON
- 逐行读取文件,并将数据插入变量和数组中
- 逐行从文本文件中读取 |C++
- 我遇到使用 c++ 逐行读取输入文件的问题
- 无法逐行读取.csv文件
- 在 c++ 中逐行读取文件(将代码从 Python 转换为 C++)
- 如何逐行从文件中获取单词,并在C++中用分号分隔?
- C ++ txt 文件成数组逐行字符串和 int 用于纸牌游戏
- 如何将文件逐行读取到矢量中,然后打印矢量
- C++逐行读取文件
- 如何逐行读取文件并分隔行组件?
- C++ 逐行从文件(包含空格)读取数据
- 对包含整数的文本文件进行排序时,必须逐行进行排序
- C++逐行读取文本文件的操作中途停止
- 如何使用c++对CSV文件执行逐行操作(一些x)