Дерево решений rpart через карет, давая ROC 0,5

Вы можете следить за этим ответом , чтобы увидеть много разных способов обработки CSV в C ++.

В вашем случае последний вызов getline фактически помещает последнее поле первой строки, а затем все остальные строки в переменную genero. Это связано с тем, что до конца файла не существует разделителя пространства. Попробуйте вместо этого заменить символ пробела на новую строку:

    getline(file, genero, file.widen('\n'));

или более лаконично:

    getline(file, genero);

Кроме того, ваша проверка на file.good() преждевременна. Последняя строка в файле все еще находится во входном потоке, пока она не будет отброшена следующим вызовом getline() для ID. Именно в этот момент обнаружен конец файла, поэтому проверка должна основываться на этом. Вы можете исправить это, изменив свой тест while на основе вызова getline() для самого ID (при условии, что каждая строка хорошо сформирована).

while (getline(file, ID, ',')) {
    cout << "ID: " << ID << " " ; 

    getline(file, nome, ',') ;
    cout << "User: " << nome << " " ;

    getline(file, idade, ',') ;
    cout << "Idade: " << idade << " "  ; 

    getline(file, genero);
    cout << "Sexo: " <<  genero<< " "  ;
}

Для лучшей проверки ошибок вы должен проверить результат каждого вызова на getline().

0
задан Doug Fir 6 March 2019 в 23:59
поделиться