c++ - int 到固定长度的字符串表示

标签 c++ string type-conversion

我有一个接受一些整数参数的函数,然后需要将其转换为固定长度为 4 的 ASCII 字符串表示形式。即 4 变为“0004”,42 变为“0042”。假设参数为 0<=n<=9999

是安全的

我可以用类似的东西来做到这一点:

void foo(int a, int b) {
    std::string sa = std::to_string(a);
    std::string sb = std::to_string(b);

    for(int i = sa.length; i < 4; i++)
        sa.insert(0,"0");
    ...
}

但这似乎超出了我的需要,尤其是在有很多参数要转换的情况下。有没有更有效的方法来做到这一点?

编辑:目标不是打印结果字符串。

编辑 2:基于 ss << std::setw( 4 ) << std::setfill( '0' ) << number; 的东西做我需要的,谢谢你的评论。

最佳答案

您可以使用 std::ostringstream 并将其视为输出流:

std::ostringstream ss;
ss << std::setw( 4 ) << std::setfill( '0' ) << number;
Send_To_Serial(ss.str().c_str());

关于c++ - int 到固定长度的字符串表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24617876/

相关文章:

c++ - 编译器是否允许进行这样的优化?

c++ - 从 vector 访问时,我的可变类的属性没有改变。 (调试)

c - 使用 fgets() 接收句子输入

c - 将 2 个 sint16s 样本表示为单个 uint32 样本

c++ - 如果没有未定义的行为 [c++],哪些浮点值不能转换为 int?

r - 如何在 R 中转换 64 位十六进制字符串?

java - 将 JNI 类型转换为 C++ 类型

c++ - 如何从用户定义的函数返回一个 3D 数组?

java - 我的 bean 中有一个字符串日期 yyyymm,想要与当前月份或上一个日历日期进行比较

python - 从 Python 中的文本文件中拆分字符