2016-10-11 6 views
0

У меня есть текстовый файл с информацией о фильме, разделенный запятыми. Я обеспечу линию для понимания:Использование getline для деления ввода с использованием запятых как delim

8,The Good the Bad and the Ugly,1966,2 

Мне нужно принять эту линию, и разделить различные части их запятой, чтобы соответствовать формату этой функции:

void addMovieNode(int ranking, std::string title, int releaseYear, int quantity); 

текстовой информации файла является в соответствии с функцией, но я не понимаю, как работает операция getline.

Я знаю, что я могу передать в текстовый файл как

getline("moveInfo.txt", string, ","); 

, но как будет, что переводить с точки зрения того, что на самом деле происходит с выходом?

Я прочитал руководство на веб-сайте cplusplus, но это не помогло прояснить ситуацию.

+2

Start [здесь] (http://stackoverflow.com/questions/1120140/how-can-i-read-and-parse-csv-files -in-c) – NathanOliver

+1

Осторожно о запятых внутри полей, таких как 'I, Robot' – coredump

+1

Если вы хотите разобрать файл в формате CSV, используйте для этого правильный синтаксический анализатор CSV, вместо этого попробуйте перевернуть стандартную библиотеку C++ в виде конусов, например что. –

ответ

2

Вы можете использовать string и stringstream:

#include <sstream> 
#include <string> 
#include <fstream> 

ifstream infile("moveInfo.txt");  
while (infile) 
{ 
    std::string line; 
    if (!std::getline(infile, line,',')) break; 
    std::istringstream iss(line); 
    int ranking, releaseYear, quantity; 
    std::string title; 
    if (!(iss >> ranking >> title >> releaseYear >> quantity)) { break; } 
} 
+1

То же самое, что и выше, это ломается с 'I, Robot' – coredump

+0

if (! (Iss >> rank >> title >> releaseYear >> количество)) Что это за линия? – Whatamia

+0

Это выглядит как стандартный формат для cin << or cout>>, это функционально делает то же самое, что и каждый вход нарушен? – Whatamia