格式化:如何将1转为“01”、2转为“02”、3转为“03”等

新手上路,请多包涵

以下代码以时间格式输出值,即如果它是下午 1:50 和 8 秒,它将输出为 01:50:08

 cout << "time remaining: %02d::%02d::%02" << hr << mins << secs;

但我想要做的是(a)将这些整数转换为 char/string(b),然后将相同的时间格式添加到其相应的 char/string 值中。

我已经达到(a),我只想达到(b)。

例如

    char currenthour[10] = { 0 }, currentmins[10] = { 0 }, currentsecs[10] = { 0 };

    itoa(hr, currenthour, 10);
    itoa(mins, currentmins, 10);
    itoa(secs, currentsecs, 10);

现在,如果我输出“currenthour”、“currentmins”和“currentsecs”,它将输出与 1:50:8 相同的示例时间,而不是 01:50:08。

想法?

原文由 Daqs 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.9k
1 个回答

如果您不介意开销,您可以使用 std::stringstream

 #include <sstream>
#include <iomanip>

std::string to_format(const int number) {
    std::stringstream ss;
    ss << std::setw(2) << std::setfill('0') << number;
    return ss.str();
}

原文由 Haatschii 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题