我一直在玩这个但是我无处可去。我试图从txt文件中读取整数列表到数组(1,2,3,...)。我知道将要读取的整数量,100,但我似乎无法填充数组。每次我运行代码本身时,它只为所有100个整数存储值0。有什么想法吗?
//Reads the data from the text file
void readData(){
ifstream inputFile;
inputFile.open("data.txt");
if (!inputFile){
//error handling
cout << "File can't be read!";
}
else{
int a;
while (inputFile >> a){
int numbers;
//Should loop through entire file, adding the index to the array
for(int i=0; i<numbers; i++){
DataFromFile [i] = {numbers};
}
}
}
}
答案 0 :(得分:0)
您没有在a
中阅读numbers
,请将代码更改为:
if (!inputFile){
//error handling
cout << "File can't be read!";
}
else{
int a;
while (inputFile >> a){
//Should loop through entire file, adding the index to the array
for(int i=0; i<a; i++){
DataFromFile [i] = a; // fill array
}
}
}
如果循环浏览文件,则每次都会使用新号码覆盖该数组。这可能不是你想要做的。你可能想用100个不同的号码填写100个地点?在这种情况下,请使用以下代码:
if (!inputFile){
//error handling
cout << "File can't be read!";
}
else{
int i = 0;
while (inputFile >> a){ // Whilst an integer is available to read
DataFile[i] = a; // Fill a location with it.
i++; // increment index pointer
}
}
答案 1 :(得分:0)
要从istream中读取单个整数,您可以执行
int a;
inputFile >> a;
你在while循环中做的是什么。 虽然对于流中的每个整数(在文件中),你将执行will的块
此inputFile >> a
一次读取一个整数。如果进入测试(如果/同时),真值将回答“是否已读取值?”的问题。
我不知道你试图用number
变量做什么。因为它没有被你初始化它lloks就像它的值是0
,最终导致foor循环不运行
如果您想要准确读取100
整数
int *array = new int[100];
for (int i=0; i<100; ++i)
inputFile >> array[i];
否则你可以保留一个计数器
int value;
int counter = 0;
while(inputFile >> value && checksanity(counter))
{
array[counter++] = value;
}