2015-04-23 3 views
-2

Я пытаюсь поместить файл с двумя столбцами данных, x и y, в два вектора, один из которых содержит только х, а другой - только y. Нет заголовков столбцов. Как это:C++: входной файл (данные неизвестного размера) в векторную проблему

x1 y1 
x2 y2 
x3 y3 

Однако, когда я запускаю этот код, возникает ошибка: (lldb) Может кто-нибудь сказать мне, если я делаю что-то неправильно?

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

using namespace std; 

int main() { 

    vector <double> x; 
    vector <double> y; 

    ifstream fileIn; 

    fileIn.open("data.txt"); //note this program should work for a file in the above specified format of two columns x and y, of any length. 

    double number; 

    int i=0; 

    while (!fileIn.eof()) 
    { 
     fileIn >> number; 
     if (i%2 == 0) //while i = even 
     { 
      x.push_back(number); 
     } 
     if (i%2 != 0) 
     { 
      y.push_back(number); 
     } 
     i++; 
    } 
    cout << x.size(); 
    cout << y.size(); 

    fileIn.close(); 
    return 0; 
} 
+1

В чем, собственно, ошибка, которую вы видите? – dg99

ответ

0

Если файл data.txt не может быть открыт, программа входит в бесконечный цикл, и если вы убьете его (с помощью Ctrl + C), сообщение «lldb» является имя отладчика. Вы должны написать что-то вроде:

fileIn.open("data.txt"); //note this program ... 
if(!fileIn) { // check if fileIn was opened 
    cout << "error opening data.txt\n"; 
    return 1; 
} 

и см. Кроме того,

while (!fileIn.eof())

не правильный способ для чтения файла. См.: Reading a C file, read an extra line, why?

0

Я думаю, что речь идет не о вашем коде. Проверьте аргумент г ++

g++ -o angle *.cpp -Wall -lm