stringstream 和 sscanf()
二者的功能都是读取字符串中的信息,之间有略微的不同
stringstream的介绍
引入头文件 <sstream>
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
string a,b,c;
getline(cin, a);
stringstream ssin(a);
string s;
while(ssin >> s)
cout << s << endl;
return 0;
}
sscanf()
要引入头文件 <cstdio>
#include <iostream>
#include <sstream>
#include <cstdio>
using namespace std;
int main()
{
char str[100];
fgets(str, 100, stdin);
int a;
char s1[100],s2[100];
double b;
sscanf(str, "%d %s %s %lf", &a, &s1, &s2, &b);
string s;
cout << a << endl << s1 << endl << s2 << endl << b << endl;
return 0;
}
stringstream 和 sscanf 的区别
stringstream 定义的 ssin(s) 可以套用while()循环,一直读到结束。sscanf()这方面就不清楚了
例题 770
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
string a,b,c;
getline(cin, a);
cin >> b >> c;
stringstream ssin(a);
string s;
while(ssin >> s)
{
if(s == b) cout << c << ' ';
else cout << s << ' ';
}
return 0;
}