c++ - 使用 C++,将 int 转换为 char 总是有 3 位数的问题
问题描述
我正在尝试使用 value 转换整数1-360
并将其保存为 value 的 char 001-360
。例子1 = 001
,,,。43 = 043
_ 349 = 349
(如果有比 char 更好的方法,我会全力以赴)
我已经使用 string 或 char[] 寻找不同的天气方法,但似乎无法正确处理。
LOtrackAngle 将是一个整数 1-360
case 'q':
case 'Q':
{
char trackAngleCHR[4];
sprintf(trackAngleCHR, "%d", LOtrackAngle);
ss << " 16"
<< "1" << trackAngleCHR << ""
<< "1"
<< "9";
LOtrackAngle += 1;
if (LOtrackAngle > 360)
{
LOtrackAngle = LOtrackAngle - 360;
}
break;
}
是:
LOtrackAngle=248, Output is 16124819.
LOtrackAngle=34, Output is 1613419.
LOtrackAngle=7, Output is 161719.
应该:
LOtrackAngle=7, Output is 16100719.
我需要这些总是 8 个字符长。
解决方案
由于您已经使用流,我建议使用完全 C++ 解决方案:
#include <iomanip> //for std::setw
case 'q':
case 'Q':
{
ss << " 16" << "1"
<< std::setw(3) << std::setfill('0') << LOtrackAngle
<< "1" << "9";
LOtrackAngle += 1;
if (LOtrackAngle > 360)
{
LOtrackAngle = LOtrackAngle - 360;
}
break;
}
它不仅更简洁,更易于阅读,而且还可以防止缓冲区溢出(如果您的数字4
由于某种原因不适合长度的缓冲区,您将不会得到一些奇怪的 UB)
推荐阅读
- ansible - Ansible 寄存器与循环一起迭代
- graphql-js - 自定义针对 graphql-tools 中的类型定义的模拟数据
- google-apps-script - 正则表达式从电子邮件中提取匹配的文本和任何数字
- python - 为什么 Popen.communicate() 在 "||" 之后不返回输出 操作员?
- sql-server - 如何从 SQL Server 中的表中解析 XML
- jboss - 在一个 Excel 中从多个工作表中读取 Drool 规则
- arrays - 我期待结果将是数组的所有元素,但它并不顺利。有人可以帮助我吗?
- php - 用于文件上传大小的 php.ini 变量
- reactjs - null 不是对象(评估“RNPgReactNativeSdkBridge.startPaymentWEB”)
- flutter - 使用颤振 lint 后,TODO 注释不会出现在问题中作为 VS Code 的警告