У меня есть * .txt файлы с целыми числами, по одному в каждой строке. Таким образом, файл будет выглядеть примерно так:
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;
}
Файл открывается, когда bool '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.