`
tjmzgn
  • 浏览: 155882 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

stringstream的用法

    博客分类:
  • C++
阅读更多
stringstream通常是用来做数据转换的。相比c库的转换,它更加安全,自动和直接。

例子一:基本数据类型转换例子 int转string



#include <string>
#include <sstream>
#include <iostream>

int main()
{
    std::stringstream stream;
    std::string result;
    int i = 1000;
    stream << i; //将int输入流
    stream >> result; //从stream中抽取前面插入的int值
    std::cout << result << std::endl; // print the string "1000"
}




运行结果:print the string "1000"






例子二:除了基本类型的转换,也支持char *的转换。



#include <sstream>
#include <iostream>

int main()
{
    std::stringstream stream;
    char result[8] ;
    stream << 8888; //向stream中插入8888
    stream >> result; //抽取stream中的值到result
    std::cout << result << std::endl; // 屏幕显示 "8888"
}

屏幕显示 "8888"





例子三:再进行多次转换的时候,必须调用stringstream的成员函数clear().



#include <sstream>
#include <iostream>
int main()
{
    std::stringstream stream;
    int first, second;
    stream<< "456"; //插入字符串
    stream >> first; //转换成int
    std::cout << first << std::endl;
    stream.clear(); //在进行多次转换前,必须清除stream
    stream << true; //插入bool值
    stream >> second; //提取出int
    std::cout << second << std::endl;
}

运行clear的结果
456
1
没有运行clear的结果
456
8800090900

顺便介绍用stringstream配合string进行格式化的方法有点像CString.Format:
    stringstream ss;
    ss << 100 << endl;;
    ss << "fuck" << endl;
    string s( ( istreambuf_iterator< char >( ss ) ), istreambuf_iterator< char >() );
    cout << s;

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics