从 sstream 变量中提取字符串后,如何获取剩余的字符串?

新手上路,请多包涵

就像我有一个 stringstream 变量包含 "abc gg rrr ff"

当我在 stringstream 变量上使用 >> 时,它给了我 "abc" 。我怎样才能得到剩余的字符串: " gg rrr ff" ?似乎 str()rdbuf() 都不起作用。

原文由 draw 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

您可以使用 std::getline 从流中获取字符串的其余部分:

 #include <iostream>
#include <sstream>

using namespace std;

int main() {
        stringstream ss("abc gg rrr ff");
        string s1, s2;
        ss >> s1;
        getline(ss, s2); //get rest of the string!
        cout << s1 << endl;
        cout << s2 << endl;
        return 0;
}

输出:

 abc
gg rrr ff

演示: http ://www.ideone.com/R4kfV

有一个重载的 std::getline 函数,其中第三个参数带有一个分隔符,您可以读取该字符串。请参阅 std::getline 的文档:

原文由 Nawaz 发布,翻译遵循 CC BY-SA 3.0 许可协议

std::istringstream input;
int extracted;
input >> extracted;

IMO,您可能做的最简单的事情是:

 std::stringstream tmp;
tmp << input.rdbuf();
std::string remainder = tmp.str();

这在性能方面不是最佳的。否则,直接访问字符串缓冲区(可能在流上使用 rbuf().pubseekpos tellg ……尚未测试过)。

原文由 sehe 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题