stringstream用法

头文件#include

【数字 --> 字符串】

<<是插入运算符,>>是提取运算符。

cout能使用的所有ios格式标记也可以在stringstream对象中使用。

程序功能如下:我们先将数据传递给一个stringstream对象,然后调用函数str()将对象所包含的内容赋给一个string对象。

#include 
#include 
 
using namespace std;
 
int main()
{
    double pi = 3.141592653589793;
    float dollar = 1.00;
    int dozen = 12;
    int number = 35;
    
    stringstream ss;
    
    ss << "dozen: " << dozen << endl;
    
    //显示小数
    ss.setf(ios::fixed);
    
    //显示2位小数
    ss.precision(2);
    ss << "dollar: " << dollar << endl;
    
    //显示10位小数
    ss.precision(10);
    ss << "pi: " << pi << endl;
    
    //按十六进制显示整数
    ss.unsetf(ios_base::dec);
    ss.setf(ios::hex);
    ss << "number: " << number << endl;
    
    string text = ss.str();
    cout << text << endl;
    
    return 0;
}
stringstream用法_第1张图片

【字符串 --> 数字】

程序功能如下: 我们先将字符串传递给一个stringstream对象,然后数值赋给相应的变量。

#include 
#include 
 
using namespace std;
 
int main()  
{  
    double  dVal;    
    int     iVal;
    string  str;
    stringstream ss;
    
    // string -> double
    str = "123.456789";  
    ss << str;
    ss >> dVal;
    cout << "dVal: " << dVal << endl;
    
    // string -> int
    str = "654321";  
    ss.clear();
    ss << str;
    ss >> iVal;
    cout << "iVal: " << iVal << endl;  
        
    return 0;  
}

【多个字符串拼接】

#include 
#include 
#include 
 
using namespace std;
 
int main()
{
    stringstream sstream;
    
    // 将多个字符串放入 sstream 中
    sstream << "first" << " " << "string,";
    sstream << " second string";
    cout << "strResult is: " << sstream.str() << endl;
 
    // 清空 sstream
    sstream.str("");
    
    sstream << "third string";
    cout << "After clear, strResult is: " << sstream.str() << endl;
 
    return 0;
}

正如上例所示,如果想清空stringstream,必须使用sstream.str("")方式

clear()方法适用于进行多次数据类型转换的场景。

#include 
#include 
 
using namespace std;
 
int main()
{
    stringstream sstream;
    int first, second;
 
    // 插入字符串
    sstream << "456";
    // 转换为int类型
    sstream >> first;
    cout << first << endl;
 
    // 在进行多次类型转换前,必须先运行clear()
    sstream.clear();
 
    // 插入bool值
    sstream << true;
    // 转换为int类型
    sstream >> second;
    cout << second << endl;
 
    return 0;
}

你可能感兴趣的:(C/C++)