Ifstream不会读取所有整数
ifstream wont read all integer
当我阅读TestData.txt文件时,它给了我错误的输出。我做错了什么?我使用int数组,所以我可以在将数据保存到数组后进行合并排序。
TestData.txt
-------------------
31791 564974 477059 269094 972335
739154 206345 634644 227684 398536
910177 507975 589785 67117 395140
598829 372499 364165 450187 996527
700285 263407 918021 661467 457544
656297 846316 221731 240676 68287
913 141702 845802 477617 109824
{
int myArray[1000];
int i;
//reading givin data
const char* filename= "TestData.txt";
ifstream file(filename);
if(file.is_open())
{
for(i = 0; i <=999; ++i)
{
file >> myArray[i];//storing data to array
}
}
需要检查您是否ifstream是end of file
,在这种情况下,您从文件绑定中获得垃圾值。
只要修改一下,代码就可以了。
改变:
for(i = 0; i <=999; ++i)
:
for(i = 0; i <=999 && !file.eof(); ++i)
从文件中读取1000个实体,其中包含的整数明显少于1000个。数组的第一个值必须是正确的,但是在到达文件末尾之后,操作符>>将不会准备好任何东西。
例如,下面是一种写法:
const char* filename= "TestData.txt";
std::vector<int> myArray;
std::ifstream file(filename);
if(file.is_open())
{
int v;
while(file >> v) {
myArray.push_back(v);
}
}
int如果我没有错,可以保持数据从-32768到32767。因此,如果你有比这更大的值(你有,从你的源文件),你不会得到你期望的结果。
顺便说一句,如果你能知道你得到了什么输出,那就太好了。
相关文章:
- 如何在c++中从文本文件中逐行读取整数
- Arduino从Txt读取整数
- 如何将以逗号和空格分隔的整数读取到 2D 数组中?
- 从二进制文件中读取整数数组
- 如何从字符串C++读取多个整数
- 使用字符串流读取整数并将它们相加
- 如何将字符串和整数读取到两个单独的动态数组中的程序编写?
- 如何使用字符和整数C 读取文件
- 从文件到短 /长整数读取字节
- do整数读取需要受到关键部分的保护
- 此项目不会将整数读取为二进制并将其作为二进制输出到新文件
- 将连续字节作为一个整数读取
- 如何将文件中的整数读取到动态数组中
- 如何将字符串读取为字符串向量或将整数读取为整数向量
- 将文件中的间隔整数读取到C++数组中
- 将文件中的整数读取到C++中的向量中
- 如何在C++中将空格和换行符分隔的整数读取到2D数组中
- 将一组整数读取为C++中的字符串
- 我如何得到多行字符串和整数读取和输入文件,并在c++中显示
- 通过无符号整数读取无符号字符数组未定义,因此不安全