C++ostringstream用法

发布时间:2025-12-09 13:46:13 浏览次数:4

ostringstream用法

1.类型转换

要求包含头文件;

字符串和int之间的互相转换;

int num = 100;string str = "";std::ostringstream oss;oss << num;oss >> str;//str结果为"100";

可用于自定义类型转换,类之间转换;

class A{    int a;}class B{    int b;}A a;B b;std::ostringstream oss;oss << a;oss >> b;//str结果为"100";

可以写成泛型类同来互转;

template<class T>void to_string(string& result,const T& t){std::ostringstream oss;oss<<t;result = oss.str();}//调用端std::string str;to_string(str,3.1415926);to_string(str,false);//两种类型之间转换template<class out_type,class in_value>out_type convert(const in_value & t){std::stringstream stream;stream<<t;//向流中传值out_type result;//这里存储转换结果stream>>result;//向result中写入值return result;}double d;string s="12.56";d=convert<double>(s);//d等于12.56s=convert<string>(9000.0);

2.代替sprintf拼接字符串

通常我们字符串拼接使用两种方式:

1.直接string相加,这种是很方便但是会造成内存碎片;

2.sprintf,这种第一个参数是char数组,不好判定长度的情况下,导致我们开很大的无用空间;

ostringstream恰好可解决这种问题:

std::ostringstream oss;int a = 100;std::string result;oss << "aaa" << a;result = oss.str();std::cout << result;std::cout << std::endl;std::string str = "score:";int score = 100;char buff[100];sprintf_s(buff, "score:%d", 100);std::cout << buff;

输出结果:

3.使用ostringstream好处

1.不需要开多余的内存,不用担心缓冲区溢出;

2.一个作用域内,一个流可以重复使用,不需要重新创建;但是用之前需要clear();

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477