我正在尝试读取一个名为numbers.txt的文件,并将整数插入数组中。我的代码只输出文件中的最后一个整数。
//numbers.txt
1
10
7
23
9
3
12
5
2
32
6
42
我的代码:
int main(){
ifstream myReadFile;
myReadFile.open("/Users/simanshrestha/Dev/PriorityQueue/PriorityQueue/numbers.txt");
char output[100];
int count = 0;
if (myReadFile.is_open()) {
while (!myReadFile.eof()) {
myReadFile >> output;
//cout<< output << endl;
count++;
}
for(int i=0;i<count;i++)
{
cout << output[i];
}
cout<<endl;
}
cout << "Number of lines: " << count<< endl;
myReadFile.close();
return 0;
}
答案 0 :(得分:2)
int main()
{
std::ifstream myReadFile;
myReadFile.open("/home/duoyi/numbers.txt");
char output[100];
int numbers[100];
int count = 0;
if (myReadFile.is_open())
{
while (myReadFile >> output && !myReadFile.eof())
{
numbers[count] = atoi(output);
count++;
}
for(int i = 0; i < count; i++)
{
cout << numbers[i] << endl;
}
}
cout << "Number of lines: " << count<< endl;
myReadFile.close();
return 0;
}
试试这个。 atoi是一个函数将字符串转换为整数。
答案 1 :(得分:1)
您也可以尝试这样做:与底部相同
基本上你需要定义一个“temp”或holder变量来存储你的数据。并且循环内的任何内容都会停留在该循环中,导致范围解析,并且每次存储时都会覆盖数据,因为它根本不会退出。
希望这有帮助!
#include <fstream>
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
const string FILE = "your file name here";
int main()
{
ifstream myReadFile;
myReadFile.open(FILE);
char output[100];
int numbers[100];
int count = 0;
if (myReadFile.is_open()){
while (myReadFile >> output && !myReadFile.eof()) //not stopping until we reach end of file
{
numbers[count] = atoi(output); //converts string to int
count++;
}
for(int i = 0; i < count; i++)
{
cout << numbers[i] << endl;
}
}
cout << "Number of lines: " << count+1 << endl; //total number of lines in file
myReadFile.close();
else{ cout << "Error: File name not loaded" << endl;}
return 0;
}
答案 2 :(得分:0)
我可能会猜测您的代码是否获得了所有数字的总和,并将其保存在数组的第一个元素中? 我还想猜你想要将文本文件中第一行的编号保存在数组的第一个元素中吗?第二个元素中的第二行依旧等等?
如果是这样,以下代码可能需要更新:
myReadFile >> output;
到
myReadFile >> output[count];
我很确定这可以在C中运行并假设这也适用于C ++
更新: 另外要添加的是像这样的2D数组:
char output[100][5]; //assuming our number is at most 5 char long