什么是C ++中ToString(“00.00000”)的等价物?

时间:2014-10-21 04:36:24

标签: c++

我尝试了以下内容来获取.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,这里有什么不对吗?

谢谢!

2 个答案:

答案 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是整个字段的最小宽度,而不仅仅是小数点的左侧。