istringstream用于C++风格的串流输入操作。使用时需要添加#include<sstream>这个头文件。
#include <iostream>
#include <stdio.h>
#include<string.h>
#include<string>
#include<sstream>
using namespace std;
int main()
{
string str="I am a girl.";
istringstream is(str);
string buf;
while(is>>buf)
{
cout<<buf<<endl;
}
return 0;
}
运行结果如下,可以看出istringstream是以空格为分隔符进行处理的。
我们都知道使用cin或者scanf("%s")读取一行字符串都有一个问题:会传递并忽略任何前导白色空格字符(空格、制表符或换行符)。例如输入summer vacation,则只能先读取summer。
string的getline函数:
getline()函数的定义如下所示
1. istream& getline ( istream &is , string &str , char delim );
2. istream& getline ( istream &is , string &str )
is 进行读入操作的输入流
str 用来存储读入的内容
delim 终结符,遇到该字符停止读取操作,不写的话默认为回车
string str="I am a girl.";
istringstream is(str);
string buf;
char del=' ';
while(getline(is,buf,del))
{
if(buf.size()) cout<<buf;
}
输出结果为:Iamagirl.