服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - stringstream操纵string的方法总结

stringstream操纵string的方法总结

2021-04-22 15:16C语言教程网 C/C++

下面小编就为大家带来一篇stringstream操纵string的方法总结。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

1 split字符串

之前在用C#写代码的时候,用过split函数,可以把一个字符串根据某个分隔符分成若干个字符串数组。在用C++操纵字符串的时候,我一直使用很笨的遍历的方法。为此,我问候过很多次C++标准委员会。直到某一天,我做了一个处理绝对路径的题目。

首先,我要把‘/'作为分隔符,把输入字符串split一下。下面是我的代码: 

?
1
2
3
4
5
6
7
8
string inputString("/home/fun/./../code/");
stringstream ss(inputString);
string tmp;
while(getline(ss,tmp,'/'))
{
    if(tmp.empty())  continue;
    bulabula;      
}

神奇的是getline函数,此函数配合stringstream使用,就实现了split函数的功能。简直历害!

2 格式化输入

当我们有一个字符串需要解析的时候,可以使用stringstream。

?
1
2
3
4
5
6
7
8
9
10
string inputString("123abc 123.4one two three four");
  stringstream ss(inputString);
  string s;
  int i;
  double d;
  ss >> i >> s >> d;
  cout << i << " " << s.c_str() << " " << d ;
  while (ss >> s)
    cout <<" "<<s.c_str();
  cout << endl;

输出:

123 abc 123.4 one two three four

是不是很好用呢?不过要注意,当我们使用>>来格式化输入数值型变量的时候,后面是不需要跟空格的,而使用>>来格式化输入string或char*的时候,后面一定要跟空格。当然格式化输入string,我们也可以使用getline(ss,s,' ')。一样的效果。

有标准库用的时候,还是要用的,事半功倍!

以上就是小编为大家带来的stringstream操纵string的方法总结全部内容了,希望大家多多支持服务器之家~

延伸 · 阅读

精彩推荐