在C++中使用std::to_string(),如何预填一个从整数转换而来的字符串?我尝试使用#include 和std::setfill('0'),但它没有起作用。这是简单的测试代码。
我想做的是将一些数字转换为字符串,但其中一些需要用零填充,而其他数字不需要(我实际上是用它来创建文件名)。应该如何做呢?(我不知道为什么这个问题不能像在C语言中使用%0d或者%04d格式说明符那样简单。)
补充:从添加前导零到字符串,不使用(s)printf,我找到了以下内容:
#include <iostream>
#include <string>
//#include <iomanip> // setw, setfill below doesn't work
int main()
{
int i;
for (i=0;i<20;i++){
std::cout << "without zero fill : " << std::to_string(i) << ", with zero fill : " << std::to_string(i) << std::endl;
//std::cout << std::setw(3) << std::setfill('0') << "without zero fill : " << std::to_string(i) << ", with zero fill : " << std::to_string(i) << std::endl; // doesn't work
}
}
我想做的是将一些数字转换为字符串,但其中一些需要用零填充,而其他数字不需要(我实际上是用它来创建文件名)。应该如何做呢?(我不知道为什么这个问题不能像在C语言中使用%0d或者%04d格式说明符那样简单。)
补充:从添加前导零到字符串,不使用(s)printf,我找到了以下内容:
int number = 42;
int leading = 3; //6 at max
std::to_string(number*0.000001).substr(8-leading); //="042"
这种方法对我来说可行,但我更希望有更自然的解决方案,而不是像这样的技巧性方法。
std::string toString (int val, std::size_t padLen = 0, char padChar = '0')
- automorphicint
之外,我们还有许多不同的整数类型(std::to_string
有9个重载版本适用于不同的类型)。 - Evgint
就足够了。去掉模板化并不是真正的改进 - 只是简化了代码。但另外两个改进才是重要的,因为它们可以在不改变逻辑的情况下扩展代码的用途。谢谢! - automorphic