一句话总结:用前记得clear,直接替代atoi/itoa。
#include <iostream>
#include <string>
#include <sstream>
int main(int argc, char const *argv[])
{
std::string str = "76453933445885";
long i = 0;
std::stringstream ss;
ss << str;
ss >> i;
std::cout<<i<<std::endl;
int j = 47855;
ss << j;
ss >> str;
std::cout<< str <<std::endl; //没变化,用之前需要清理下
ss.clear();
ss << j;
ss >> str;
std::cout<< str <<std::endl;
return 0;
}
bogon:~ zhaojunyan$ g++ -o sstream sstream.cpp
bogon:~ zhaojunyan$ ./sstream
76453933445885
76453933445885
47855
bogon:~ zhaojunyan$
在网上找了相关介绍,摘自于:http://www.usidcbbs.com/read-htm-tid-1898.html
C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。
istringstream类用于执行C++风格的串流的输入操作。
ostringstream类用于执行C风格的串流的输出操作。
strstream类同时可以支持C风格的串流的输入输出操作。
istringstream类是从istream和stringstreambase派生而来,ostringstream是从ostream和 stringstreambase派生而来, stringstream则是从iostream类和stringstreambase派生而来。
他们的继承关系如下图所示:
istringstream是由一个string对象构造而来,istringstream类从一个string对象读取字符。