浅谈sstream头文件

xiaoxiao2021-02-28  84

        在使用istreamstring,ostreamstring,streamstring的时候要用到sstream这个头文件。

        在刚开始使用的时候很蒙,完全不会用,现在来谈一下这个很棒的头文件。

        sstream这是一个字符串流,经常用于格式转换,包含了istream,ostream这些个函数,从字面就可以看出,istream是输入,ostream是输出。

#include <iostream>#include <string>#include <sstream>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 << 55555555;    oss << endl;    cout  << oss.str();       //double型转化为字符串    oss.str("");//每次使用前清空,oss.clear() 并不能清空内存    oss << 3.1234234234;    Str2 = oss.str();    cout << Str2 << endl;     //int型转化为字符串    oss.str("");    oss << 1234567;    Str2 = oss.str();    cout << Str2 << endl;        //istringstream 对象用来把一个已定字符串中的以空格隔开的内容提取出来    //istringstream 只支持 >> 操作符     istringstream iss(Input);//通过构造函数对istringstream类进行赋值,可以将一个字符串变量的值传递给istringstream对象    //若传入的字符串是常量,也可以进行如下赋值    //iss.str("ccc 555 aaa 333");    //扩展,iss对象支持对C语言流的操作,所以也可以进行如下的赋值    //iss.str(Input.c_str());    while(iss >> Str1 >> a)    {        cout << Str1 << "  " << a << endl;    }     //stringstream类    //该类就是上述istringstream和ostringstream类的综合,支持<<, >>操作符,可以进行字符串到其它类型的快速转换    stringstream ss;    ss << Input;    while(ss >> Str1 >> a)    {        cout << Str1 << " " << a << endl;    }     //总结这几个类istringstream, ostringstream, stringstream, 包含在<sstream>文件里    //输入方式:    //1.构造函数。iss, oss, ss 都支持。eg. istreamstring iss(Input), ostreamstring(Input), stringstream ss(Input)    //2.<< 操作符。oss, ss 支持。 oss << Input, ss << Input;    //3. .Str()函数,提供C中的字符串头指针,或者匿名内存首地址    //  eg. iss.str(Input.c_str()), iss.str("abc 123 345")    //      oss.str(Input.c_str()), oss.str("abc 123 345")    //      ss.str(Input.c_str()), ss.str("abc 123 345")     //输出方式:    //1. 通过.str()得到一份拷贝    //eg. Str1 = iss.str(), Str1 = oss.str(), Str1 = ss.str();    // 显然,这个也提供C语言的接口    //  printf("%s", iss.str().c_str()),  printf("%s", oss.str().c_str()),  printf("%s", ss.str().c_str())    //2. >>操作符, iss和ss支持该操作       //每次不同的使用时刻必须要清空    //ss.str(""), iss.str(""), oss.str(""),暂时没有发现其它的清空方法       //最大的用处    //输入string类型,可以通过iss 或 ss 类提取出来,功能类似于C语言中的sscanf()函数, 在TC中比较常见    //提供字符串和各种类型之间的转换    return 0;}

转载请注明原文地址: https://www.6miu.com/read-32974.html

最新回复(0)