方式一:通过字符串流的方式转化
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
//第一种方式
/*
string str="192,168,1,100";
int v1=0,v2=0,v3=0,v4=0;
char ch;
istringstream iss(str);
iss>>v1>>ch>>v2>>ch>>v3>>ch>>v4;
ch='.';
ostringstream oss;
oss<<v1<<ch<<v2<<ch<<v3<<ch<<v4;
cout<<oss.str()<<endl;
*/
//第二种方式
string str="192,168,1,100";
int v1=0,v2=0,v3=0,v4=0;
char ch;
/* stringstream ss1("192,168,1,100");*///如果以这种方式传递数据,则会调用其内部的缓冲区streambuf
stringstream ss1(str);//如果str以这种方式传递数据,则会把str缓冲区和其内部的缓冲区streambuf相绑定
ss1>>v1>>ch>>v2>>ch>>v3>>ch>>v4;
ch='.';
stringstream ss2;
ss2<<v1<<ch<<v2<<ch<<v3<<ch<<v4;
cout<<ss2.str()<<endl;
/*ss1<<v1<<ch<<v2<<ch<<v3<<ch<<v4;//如果不重新声明stringstream的新对象,则会调用其前面的str的缓冲区,str的内容是是192,168,1,100
cout<<ss1.str()<<endl;*/
return 0;
}
istringstream 相当于 C语言的sprintf
ostringstream 相当于C语言的sscanf