如何获取从sstream变量中提取的字符串之后的剩余字符串
How do you get the remaining string after a string extracted from a sstream variable?
就像我有一个stringstream
变量包含"abc gg rrr ff"
当我在stringstream
变量上使用>>
时,它会给我"abc"
。如何获取剩余字符串:" gg rrr ff"
?似乎str()
和rdbuf()
都不起作用。
您可以使用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
:的文档
- std::getline
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
string str("123 abc");
int a;
istringstream is(str);
is >> a;
// here we extract a copy of the "remainder"
string rem(is.str().substr(is.tellg()));
cout << "Remaining: [" << rem << "]n";
}
std::istringstream input;
int extracted;
input >> extracted;
IMO,你能做的最简单的事情就是:
std::stringstream tmp;
tmp << input.rdbuf();
std::string remainder = tmp.str();
就性能而言,这不是最佳的。否则,直接访问字符串缓冲区(可能在流上使用rbuf().pubseekpos
和tellg
…还没有测试过)。
std::getline
getline从输入流中读取字符,并将它们放入字符串中
或者,如果您逐字逐句地需要字符串的其余部分,则可以使用std::getline(my_stringstream, result, EOF)
,其中result
是包含结果的std::string
。
继续使用operator>>
,它将以空格分隔的片段提取其余部分。
相关文章:
- 从字符串中提取整数并形成一个数组
- C ++中的StringStream有助于使用向量从字符串中提取逗号分隔的整数,而不是空格分隔的整数,为什么?
- asn1c 不会从 asn.1 模块中提取八位字节字符串的默认值
- 如何在字符串中找到字符,然后在C++中提取其余的字符串
- std::regex:匹配由数字和空格组成的字符串,并提取数字.如何?
- 使用从文件(stod、strtod、atof)中提取的数据C++从字符串转换为双精度.csv
- 清除输入缓冲区后未提取字符串流
- 如何创建一个函数来提取向量内部字符串中的字段?
- 从没有空格的字符串中提取整数
- 如何使用正则表达式从字符串中提取值
- 使用正则表达式c++从单词和分隔符之间的字符串中提取所有子字符串
- 提取字符串中的随机单词
- 将子字符串提取到最后 n 个分隔符C++
- 如何在C 中不带有弦乐和strtok的情况下拆分字符串(提取单词)
- Arduino中的字符串提取问题
- C++ 在将字符串提取到标量时处理溢出/下溢
- 将两个 '' 字符之间的子字符串提取到单独的数组中
- 字符提取与字符串提取有何不同
- 如何从输入字符串提取数值?c++
- 作为XML字符串提取请求/响应