Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;读取管道分隔文件_C++_Readfile - Fatal编程技术网

C++ C++;读取管道分隔文件

C++ C++;读取管道分隔文件,c++,readfile,C++,Readfile,我在file1.txt中找到了这些信息 4231650|A|4444 4225642|A|5555 我检查了这里的代码,了解如何在C中读取管道分隔文件++ 我根据自己的需要修改了代码。问题是它读取第一个管道很好,但之后如何读取其余的值 这是我的代码: std::ifstream file("file1.txt"); std::string line; while(std::getline(file, line)) { std::stringstr

我在file1.txt中找到了这些信息

4231650|A|4444
4225642|A|5555
我检查了这里的代码,了解如何在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;
    }
为什么接受的答案适用于int而不适用于string

因为
|
不是数字,而是整数的隐式分隔符。但它是字符串的好字符

继续用同样的方法做

std::getline(linestream, data, '|');
std::getline(linestream, varStr1, '|');
std::getline(linestream, varStr2);
为什么接受的答案适用于int而不适用于string

因为
|
不是数字,而是整数的隐式分隔符。但它是字符串的好字符

继续用同样的方法做

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

另请参见。您没有代码可以读取到第二个管道!你也不会检查你的阅读是否成功。@DavidSchwartz我复制并粘贴了上一篇文章中被接受的答案。把它改成字符串而不是int@SamB除非你理解别人的代码并亲自确认它适用于你的问题,否则不要将别人的代码剪切/粘贴到你的代码中。这不是“它与
int
一起工作”。它是“它使用制表符(空格)分隔的值”。另请参见。您没有代码可以读取到第二个管道!你也不会检查你的阅读是否成功。@DavidSchwartz我复制并粘贴了上一篇文章中被接受的答案。把它改成字符串而不是int@SamB除非你理解别人的代码并亲自确认它适用于你的问题,否则不要将别人的代码剪切/粘贴到你的代码中。这不是“它与
int
一起工作”。它是“它使用制表符(空格)分隔的值”。