2015-04-05 3 views
-1

Теперь я хочу прочитать текстовый файл, который имеет очень очень плавающее число, которое я не знаю, сколько у него есть. Я использую этот код:Прочитайте огромный текстовый файл в C++

#‎include‬ "stdafx.h" 
#include <iostream> 
#include <fstream> 

using namespace std; 
int main() 
{ 
    double a[391001]; 
    ifstream fg ("fg.txt"); 
    if (! fg.is_open()) 
    { 
     cout << "Don't open file"; 
     return 0; 
    } else { 
     for (int i = 1; i <= 391000; i++) 
     { 
      fg >> a[i]; 
     } 
    } 
    for (int i =1; i <= 391000; i++) 
    { 
     cout << a[i] << " "; 
    } 
    fg.close(); 
    system("pause"); 
    return 0; 
} 

но петля

Таким образом, вы можете сказать мне, как читать ?? Спасибо!

+0

"но это петля" - Что? Вы имели в виду, цикл никогда не заканчивается? –

+1

'double a [391001];' use 'std :: vector ' вместо этого и 'push_back()' значения во время чтения. Также вы используете неверную индексацию: 'for (int i = 1; i <= 391000; i ++)' индексы массива для 'N' начинаются с' 0' и заканчиваются на 'N-1' –

+0

' a [0] 'is не используется в вашей программе ... –

ответ

1

Попробуйте это:

#include <iostream> 
#include <fstream> 
#include <vector> 

int main(int argc, char* argv[]) 
{ 
    std::vector<double> numbers; 
    double buffer; 
    std::ifstream in_file("doubles.txt"); //this is a placeholder, change it to the actual file name 
    if(in_file.is_open()){ 
     while(in_file >> buffer){ 
      numbers.push_back(buffer); 
     } 
    } 
    for(int i = 0; i < numbers.size(); ++i){ 
     std::cout << numbers[i] << " "; 
    } 
    std::cout << std::endl; 
    return 0; 
} 
+0

О, спасибо! Я попытался, но cmd windown «нажмите и нажмите, чтобы продолжить ..» – nguyenthuan

+0

@nguyenthuan убедитесь, что файл существует –

+0

Это значит, что файл не найден. Если это Visual Studio, файл .txt находится в той же папке, что и файл решения (.sln), если вы не изменили настройки по умолчанию. – drescherjm

Смежные вопросы