C++格式化数字输入字符串的几个办法

1 最为熟知的就是sprintf了,不多说。

2 假如你用Qt的话,还可以用QString::arg()方法

3 这里着重讲讲std::stringstream。它是C++17标准引进的。详情可见

integer - Convert a number to a string with specified length in C++ - Stack OverflowC++格式化数字输入字符串的几个办法https://*.com/questions/225362/convert-a-number-to-a-string-with-specified-length-in-c

#include <sstream>
#include <iomanip>

std::stringstream ss;
ss << 900;
std::string s = ss.str();

s 的内容就变成了"900"

如果你需要字符串占据固定的长度,比如5个字符,那么代码改为如下:

#include <sstream>
#include <iomanip>

std::stringstream ss;
ss << std::setw(5) << 900;
std::string s = ss.str();

s的内容变成了"  900"。900前面有两个空格。

如果你想用其他字符,比如0,代替空格,代码改为如下:

#include <sstream>
#include <iomanip>

std::stringstream ss;
ss << std::setw(5) << std::setfill('0') << 900;
std::string s = ss.str();

最后指出一点,stringstream调用时,可能会加锁。所以在多线程情况下,可能影响并行。而sprintf不会加锁。

C++格式化数字输入字符串的几个办法

 

上一篇:mybatis-plus已经设置时间列为默认插入,但是插入操作仍然输入值导致报错或者输入时间格式不对报错


下一篇:外观数列 -- LeetCode -- 10.15