代码之家  ›  专栏  ›  技术社区  ›  Sam B

C++读取管道分隔文件

  •  0
  • Sam B  · 技术社区  · 4 年前

    我有这个信息的file1.txt

    4231650|A|4444
    4225642|A|5555
    

    我在这里检查了如何在C++中读取管道分隔文件

    C++ Read file line by line then split each line using the delimiter

    我根据自己的需要修改了一点代码。问题是它可以读取第一个管道,但之后如何读取其余值?

    这是我的代码:

    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 回复  |  直到 4 年前
        1
  •  2
  •   3CxEZiVlQ    4 年前

    为什么接受的答案适用于int而不是string?

    因为 |

    继续这样做

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