C++学习笔记——string型 到 int,double,float型的相互转换:ostringsream,istringstream,stringstream

头文件#include<sstream>
istringstream类:用于执行C++风格的串流的输入操作。
ostringstream类:用于执行C风格的串流的输出操作。
strstream类:同时可以支持C风格的串流的输入输出操作。
这里写图片描述

istringstream的功能:string型到 int,double,float型的转换

#include<iostream> 
#include <sstream> 
#include<string>
using namespace std; 
int main()   
{ 
    istringstream istr; 
    string A;
    A="1 321.7";
    istr.str(A); 
    //上述两个过程可以简单写成 istringstream istr("1 56.7"); 
    cout << istr.str()<<endl; 
    int a; 
    float b; 
    istr>>a; 
    cout<<a<<endl; 
    istr>>b; 
    cout<<b<<endl; 
    system("pause"); 
    return 0;
}

输出结果为:这里写图片描述
主要功能是完成了从string型到int 和 float型的转换

ostringstream的功能:int double 型等转化为字符串

#include<iostream> 
#include <sstream> 
#include<string>
using namespace std; 
int main()   
{ 
    int a,b;
    string Str1,Str2;
    string Input="abc 123 bcd 456 sss 999";
    //ostringstream 对象用来进行格式化的输出,可以方便的将各种类型转换为string类型
    //ostringstream 只支持<<操作符
//----------------------格式化输出---------------------------
    ostringstream oss;
    oss<<3.14;
    oss<<" ";
    oss<<"abc";
    oss<<55555555;
    oss<<endl;
    cout<<oss.str();
    system("pause");
//-----------------double型转化为字符串---------------------
    oss.str("");//每次使用前清空,oss.clear()并不能清空内存
    oss<<3.1234234234;
    Str2=oss.str();
    cout<<Str2<<endl;
    system("pause");
//-----------------int型转化为字符串---------------------
    oss.str("");//每次使用前清空,oss.clear()并不能清空内存
    oss<<1234567;
    Str2=oss.str();
    cout<<Str2<<endl;
    system("pause");
//--------------------------------------------------------
    return 0;
}

运行结果:这里写图片描述

stringstream的功能:1)string与各种内置类型数据之间的转换

#include <iostream> 
#include <sstream> 
#include <string> 
using namespace std; 

int main()   
{ 
     stringstream sstr; 
//--------int转string----------- 
    int a=100; 
    string str; 
     sstr<<a; 
     sstr>>str; 
    cout<<str<<endl; 
//--------string转char[]-------- 
     sstr.clear();//如果你想通过使用同一stringstream对象实现多种类型的转换,请注意在每一次转换之后都必须调用clear()成员函数。 
    string name = "colinguan"; 
    char cname[200]; 
     sstr<<name; 
     sstr>>cname; 
     cout<<cname; 
     system("pause"); 
}

运行结果:这里写图片描述

stringstream的功能:2)通过put()或者左移操作符可以不断向ostr插入单个字符或者是字符串,通过str()函数返回增长过后的完整字符串数据,但值 得注意的一点是,当构造的时候对象内已经存在字符串数据的时候,那么增长操作的时候不会从结尾开始增加,而是修改原有数据,超出的部分增长。

#include <iostream> 
#include <sstream> 
#include <string> 
using namespace std; 

int main()   
{ 
     stringstream ostr("ccccccccc"); 
     ostr.put('d'); 
     ostr.put('e'); 
     ostr<<"fg"; 
    string gstr = ostr.str(); 
    cout<<gstr<<endl; 
    char a; 
    ostr>>a; 
    cout<<a ;  
    system("pause");
    return 0;
}

运行结果:这里写图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章