2016-12-01 1 views
0

у меня есть CSV-файл, который передается из командной строки и выглядит примерно так:C++ передачи запятая sepetated поплавки из аргумента 3 колонки файла CSV в 3 sepetate векторов

2.26645, -0.258901, -213.274 
    5.45054, 345.333, 73.1871 
    7.18079, 25.156, 125.408 
    ... 

Я хочу, чтобы извлечь эти поплавки в 3 float-векторы, по одному для каждого столбца. Я только был в состоянии извлечь все поплавки только в одном векторе,

ifstream input_file; 
input_file.open(argv[1],ios::out); 

string line; 
string value; 

while(getline(input_file,line)){ 
    istringstream ss(line); 
    while(getline(ss,value,',')){ 


    } 


} 

Проблема в том, что, как было сказано выше, я хочу 3 векторы по одному для каждого столбца вместо этого.

+0

Почему три вектора? Почему ни одна структура не обертывает три числа в каждой строке и вектор этих структур? –

+0

может быть, в конце концов. Я просто оборачиваю голову небольшими частями постепенно расширяющейся программы. –

ответ

0

Первая проблема заключается в том, что вы ввели в файл строки имя файла в поток строк, а не содержимое файла. Откройте файл input file stream, чтобы прочитать данные из файла.


После решить вышеуказанную проблему, вторая проблема может быть решена путем чтения одной строки за один раз из файла и поместить в input string stream. Затем проанализируйте ввод из этого потока.

Этот синтаксический анализ может быть выполнен аналогично тому, что вы знаете, пропуская пробел и запятую. Или вы можете использовать std::getline три раза, чтобы получить каждое значение (std::getline поддерживает настраиваемые разделители полей), а затем convert the strings to floating point numbers. Поместите каждое число в свой собственный вектор.

+0

Я изменил код, как я могу сохранить значения для каждого столбца сейчас? –

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