我尝试了以下内容来获取.ToString(" 00.00000")但失败了
char buf[500];
memset(buf, 0, sizeof(buf));
sprintf_s(buf, "%02.7f",abc);
std::string abc_str = buf;
我意识到%02没有任何影响,例如当我得到7.0时,结果是7.0000000而不是所需的07.0000000,这里有什么不对吗?
谢谢!
答案 0 :(得分:2)
C ++中的等价物是:
#include <iostream>
#include <iomanip>
int main()
{
std::cout << std::setw(10) << std::setfill('0')
<< std::fixed << std::setprecision(7) << 7.0;
return 0;
}
输出:
07.0000000
如果您需要将其实际存储到std::string
,那么:
#include <sstream>
std::ostringstream oss;
// ...
std::string s = oss.str();
答案 1 :(得分:0)
#include <stdio.h>
int main() {
char buf[500];
printf("%010.7f\n", 7.0);
}
07.0000000
请注意,10是整个字段的最小宽度,而不仅仅是小数点的左侧。