目前我只知道将值插入C ++字符串或C字符串的两种方法。
我所知道的第一种方法是使用std::sprintf()
和一个C字符串缓冲区(char数组)。
第二种方法是使用类似"value of i: " + to_string(value) + "\n"
的内容。
但是,第一个需要创建缓冲区,如果您只想将字符串传递给函数,则会产生更多代码。第二个产生长行代码,每次插入一个值时字符串都会被中断,这使得代码更难阅读。
从Python我知道format()
函数,它的用法如下:
"Value of i: {}\n".format(i)
大括号替换为格式值,并且可以追加.format()
。
我真的很喜欢Python的方法,因为字符串保持可读性,不需要创建额外的缓冲区。在C ++中有没有类似的方法呢?
答案 0 :(得分:5)
在C ++中格式化数据的惯用方法是使用输出流(std::ostream
reference)。如果您希望格式化的输出以std::string
结尾,请使用output string stream:
ostringstream res;
res << "Value of i: " << i << "\n";
使用str()
成员函数来收集结果字符串:
std::string s = res.str();
这符合格式化输出数据的方法:
cout << "Value of i: " << i << "\n";