C++ C++;读取管道分隔文件
我在file1.txt中找到了这些信息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
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
一起工作”。它是“它使用制表符(空格)分隔的值”。