C ++ читать файл с разделителем канала - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть file1.txt с этой информацией

4231650|A|4444
4225642|A|5555

Я проверил здесь код на предмет того, как читать файл с разделителем каналов в C ++

C ++. разделить каждую строку с помощью разделителя

Я немного изменил код в соответствии со своими потребностями. Проблема в том, что он читает первый канал нормально, но после этого, как мне прочитать остальные значения?

Это мой код:

std::ifstream file("file1.txt");
    std::string   line;

    while(std::getline(file, line))
    {
        std::stringstream   linestream(line);
        std::string         data;
        std::string         valStr1;
        std::string         valStr2;


        std::getline(linestream, data, '|');  // read up-to the first pipe

        // Read rest of the pipe values? Why did the accepted answer worked for int but not string???
        linestream >> valStr1 >> valStr2;

        cout << "data: " <<  data << endl;
        cout << "valStr1: " <<  valStr1 << endl;
        cout << "valStr2: " <<  valStr2 << endl;
    }

Вот вывод:

Code Logic starts here ...
data: 4231650
valStr1: A|4444
valStr2: A|4444
data: 4225642
valStr1: A|5555
valStr2: A|5555
Existing ...

1 Ответ

2 голосов
/ 29 апреля 2020

Почему принятый ответ работал для int, но не для строки?

Поскольку | не является di git и является неявным разделителем для чисел int. Но это хороший символ для строки.

Продолжайте делать то же самое

std::getline(linestream, data, '|');
std::getline(linestream, varStr1, '|');
std::getline(linestream, varStr2);
...