stringstream中的行尾

时间:2013-11-23 22:36:00

标签: c++ stringstream

我们说我们有一个类似的文件:

1 2
3 4 5
6 7 8

通常我们会做一个getline(),然后使用字符串流来解析行内部。然而,getline返回一个我们创建字符串流的字符串。 是否有可能在字符串流中获取文件的全部内容然后解析标记,同时知道行尾的位置?

1 个答案:

答案 0 :(得分:1)

将整个文件放入std::string并将其放入std::istringstream并阅读它似乎没什么意义:您可以直接从std::ifstream读取。如果您真的想要将文件放入std::string,可以使用以下几种方法:

std::string s0{ std::istreambuf_iterator<char>(in), std::istreambuf_iterator<char>() };
std::string s1( (std::istreambuf_iterator<char>(in)), std::istreambuf_iterator<char>() );
std::ostringstream out; out << in.rdbuf(); std::string s2 = out.str();

显然,您只需使用其中一种方法,因为每种方法都会使用输入流in。在std::string中存储文件后,您可以从中构建std::istringstream

我认为你也可以使用

std::stringstream stream;
stream << in.rdbuf();
stream.seekg(std::ios_base::beg, 0);

首先避免将内容读入std::string