C++之sstream

sstream

库中声明的标准类可以通过传入的数据类型判断需要哪些转换,自动选择所必需的转换。而且转换结果保存在stringstream对象的内部缓冲中。我们不必担心缓冲区溢出,因为这些对象会根据需要自动分配存储空间

sstream库定义了三种类:

istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入/输出操作。所以一般情况下直接通过stringstream实例化对象来即可,同时可以完成输入和输出

stringstream

  • stringstream支持<<、>>操作符

    >>的用法: 提取流中的值(可以提取为基本数据类型)

    string s1;
    stringstream ss("1234");
    ss >> s1;
    cout<<s1;   //1234
    
  • "<<"的用法:向流中插入值(可以是任何基本数据类型)

    int i=100;
    stringstream ss;
    ss << i;    //流中储存了i的字符串类型的值
    
  • stringstream ss(string s); 实例化对象并且初始化,可以传入字符串

  • ss.clear(); 将对象清空

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

用法

因为sstream是字符串转换的流,因此可以使用它来分割字符串中的空格(制表符)

string s="Ha pp ig!",buf,str[105];
int num=0;
stringstream ss(s);
while(ss>>buf)
    str[num++]=buf;
for(int i=0;i<num;i++)
    cout<<str[i]<<endl;
/*
Ha
pp
ig!
*/

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