從一個* .txt文件讀取數字我有一個* .txt文件,每行有一個整數。所以文件看起來像使用fstream從C++的* .txt文件讀取數字使用fstream
103123
324
4235345
23423
235346
2343455
234
2
2432
我想從一個文件行逐行讀取這些值,所以我可以把它們放在一個數組中。下面是一些代碼,我寫了實現這一
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int nArray[1000];
int i = 0;
int _tmain(int argc, _TCHAR* argv[])
{
ifstream file("C:\Users\Chinmay\Documents\Array.txt");
//fstream file("C:\Users\Chinmay\Documents\Array.txt", ios_base::out);
//fstream file();
//file.open("C:\Users\Chinmay\Documents\Array.txt", ios_base::out);
bool b = file.is_open();
//file.seekg (0, ios::beg);
int i = file.tellg();
while(!file.eof())
{
//string str;
//getline(file, str);
//nArray[i++] = atoi(str.c_str());
char str[7] = {};
file.getline(str,7);
nArray[i++] = atoi(str);
}
file.close();
return 0;
}
該文件打開爲布爾「B」返回true。但while循環在一次運行中退出。數組是空的。我在網上看了起來,試了試其他像這裏給出的代碼在
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int nArray[100000];
int i = 0;
int _tmain(int argc, _TCHAR* argv[])
{
ifstream in("C:\Users\Chinmay\Documents\Array.txt");
bool b = in.is_open();
if(!in) {
cout << "Cannot open input file.\n";
return 1;
}
char str[255];
while(in) {
in.getline(str, 255); // delim defaults to '\n'
if(in) cout << str << endl;
}
in.close();
return 0;
}
這將立即返回爲好。文件打開但沒有讀取數據。該文件不是空的,並有數據。有人能解釋我要去哪裏嗎?我正在使用Visual Studio 2011測試版。
你爲什麼不使用'int tmp; cin >> tmp'並將結果存儲在'std :: vector'或'std :: list'中? – 2012-03-27 00:45:54
'std :: vector'確實是你的朋友。 'int nArray [100000];'可能會非常浪費記憶。 –
2012-03-27 00:49:59
我同意使用std :: vector而不是在堆棧上分配數組。這只是一個初稿,我只是試圖從文件中讀取部分權利。我也會嘗試尼克拉斯B的建議。儘管爲什麼fstream和fstream.getline()不起作用,但仍然好奇。謝謝。 – 2012-03-27 01:07:55