C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含<sstream>头文件,通常是用来做数据转换的。
- istringstream类用于执行C++风格的串流的输入操作。
- ostringstream类用于执行C风格的串流的输出操作。
- stringstream类同时可以支持C风格的串流的输入输出操作。
本文主要介绍stringstream类
想起来去年CCF有道ipv4地址排序题,当时用c++写了好长的代码,现在想想用stringstream把string转成int数组就能轻松解决
下面是ipv4转化成数组的过程
#include <iostream>
#include <vector>
#include <sstream>
using namespace std;
int main()
{
string str = "192.168.10.3";
for (int i=0; i<str.length(); i++)
{
if (str[i] == '.')
str[i] = ' ';
}
vector<int> array;
stringstream ss(str); //str放入输入流中
int temp;
while (ss >> temp)//不断抽取int类型的值
array.push_back(temp);
for(int i=0;i<array.size();i++) //现在 array={192,168,10,3}
cout<<array[i]<<endl;
}
上例中,构造字符串流的时候,空格会成为整形参数的内部分界,使用stringstream对象可以简化类型转换