正在用c++从文件中读取整数
Reading integer from a file in c++
我在.txt中有一个名为的文本文件,每行都有一个整数。第一行包含行数减去1(=整数的数量)。我想把这些整数读入一个数组。所以我写了以下程序:
#include <iostream>
#include <fstream>
int main(int argc, char * argv[])
{
std::fstream myfile("in.txt");
int number;
int counter=0;
myfile >> number;
int inputArray[number];
for(counter=0;counter=number;counter++)
{
myfile>>inputArray[counter];
}
for(counter=0;counter=number;counter++){
printf("%i",inputArray[counter]);
}
return 0;
}
Q1:当我运行它时,什么都没发生!此时会出现一个黑屏并保持空白。怎么了?
Q2:如果输入文件真的很大(包含大约2^27个整数),这个程序是个好主意,还是我必须做其他事情?
您的代码有几个问题:
首先,您无法检查您的输入操作是否成功。做一些类似的事情
if (! (myfile >> number)) {
std::cerr << "Reading number failed!n";
return -1;
}
对于每个输入操作。否则,您可能会使用垃圾值,这可能会导致奇怪且难以找到的错误。
接下来,C++中没有可变大小的数组,请改用std::vector<int> inputArray(number);
。这将把整个数组初始化为0
,这可能需要一些时间,您可以将代码更改为
std::vector<int> inputArray;
inputArray.reserve(number);
for(int64_t counter=0;counter<number;counter++)
{
int temp;
myfile>>temp;
inputArray.push_back(temp);
}
以避免这种情况。
最后,您的循环条件是错误的。它们应该是
for(counter=0;counter<number;counter++)
如果数字的数量可能很大,则应该使用固定大小的整数,如int64_t
作为计数器,而使用number
。
这是个好主意吗 作为最后一句话,以下是我将如何编写带有错误处理和所有内容的输入操作:for (int temp; myFile >> temp;)
inputArray.push_back(temp);
if( inputArray.size() != number)
std::cerr << "Number of numbers read did not match number in first line!n";
看起来这行有一个拼写错误:
for(counter=0;counter=number;counter++)
应该是:
for(counter=0; counter < number; counter++)
您在下一个for
循环中也出现了同样的错误。
-
1.您必须创建一个动态数组,才能在执行程序时选择其大小
- 逻辑运算符出错
- 在声明我的文件时,最好放置您想要的输入或输出文件
试试这个:
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char * argv[])
{
std::fstream myfile("in.txt", ios::in | ios::out);
int number;
int counter = 0;
myfile >> number;
int *inputArray = new int[number];
for (counter = 0; counter != number; counter++){
myfile >> inputArray[counter];
}
for (counter = 0; counter != number; counter++){
printf("%i", inputArray[counter]);
}
delete[] inputArray;
return 0;
}
我认为二进制文件更适合大量的数据。
相关文章:
- 如何在c++中从文本文件中逐行读取整数
- Arduino从Txt读取整数
- 从二进制文件中读取整数数组
- 使用字符串流读取整数并将它们相加
- 如何在从文件中读取整数时使用 file.eof()?
- C++从键盘读取整数的功能
- 为什么字符串流只读取整数中的第一个数字?如何使它只在空白处移动?
- 如何从文本文件C++读取整数和特殊字符
- C++ 从控制台读取整数数组
- 从文本文件中读取整数并将它们存储到数组中
- 输入重定向读取整数和char C
- 从文件读取整数到矩阵 (c++)
- 如何读取整数直到线结束
- 从输入文件读取整数,仅存储数组C 中的唯一整数
- 从文本文件中读取整数
- 读取整数对,直到文本输入文件中的换行符
- 在C++中从文件中读取整数和字符
- 使用 MFC C++ 6.0 从 ms 访问中读取整数数据
- 从标准输入和输入值中读取整数到向量
- 从文件中读取整数到数组