C++学习-sstream用法(转)

头文件 #include<sstream>

stringstream 对象用于输入一行字符串,以 空格 为分隔符把该行分隔开来

string str= "hello world I am very happy!";                           
stringstream sstream(str);
 
while (sstream)
{
    string substr;
    sstream>>substr;
    cout << substr << endl;    //也可vec.push_back(substr);
} 

/类型转换/

1 类型转换

1.1 利用stringstream进行常见类型转换

/--------------------int转string------------------/

stringstream stream;
string result;
 
int i = 1000;
stream << i;                //将int输入流
stream >> result;           //从stream中抽取前面插入的int值
cout << result << endl;     // cout the string "1000"

/--------------------int转char *------------------/

stringstream stream;
char result[8] ; 
stream << 8888;             //向stream中插入8888
stream >> result;           //抽取stream中的值到result
cout << result <<endl;      // 屏幕显示 "8888"

1.2 利用to_string() 进行常见类型转换, 返回值为string

s1=to_string(10.5);                        //double到string

s2=to_string(123);                        //int到string

1.3 定义一个通用的转换模板,用于任意类型之间的转换

template<class out_type,class in_value>
out_type convert(const in_value & t)
{
    stringstream stream;
    stream<<t;//向流中传值
    out_type result;//这里存储转换结果
    stream>>result;//向result中写入值
    return result;
}
 
int main()
{
    double d;
    string salary;
    string s="12.56";
    d=convert<double>(s);//d等于12.56
    salary=convert<string>(9000.0);//salary等于”9000”    
    
    return 0;
}

/stringstream补充/

2 stringstream补充

2.1 重复利用stringstream对象

如果你打算在多次转换中使用同一个stringstream对象,记住再每次转换前要使用clear()方法;

在多次转换中重复使用同一个stringstream(而不是每次都创建一个新的对象)对象最大的好处在于效率。stringstream对象的构造和析构函数通常是非常耗费CPU时间的。

stringstream stream;
int first, second;
 
stream<< "456"; //插入字符串
stream >> first; //转换成int
cout << first << endl;
 
stream.clear(); //在进行多次转换前,必须清除stream,否则第二个数据可能输出乱码
    
stream << true; //插入bool值
stream >> second; //提取出int
cout << second << endl;

完了
只摘了自己需要的,资料来源于:
https://blog.csdn.net/qq_25800311/article/details/99709524

posted @ 2020-12-13 01:05  七铭的魔法师  阅读(541)  评论(0编辑  收藏  举报