c++ - 通过 ostringstream 格式化时可以混合字符串和整数/浮点数吗
问题描述
我试图完全理解如何使用ostringstream
来现代化一些使用sprintf
. 问题在于替换生成随机或顺序数据的测试代码。这是一个简化的示例:
char num[6], name[26];
sprintf(num, "%05d", i);
sprintf(name, "Customer # %d", i);
撇开长度计算的细节不谈,将结果复制到数组和空终止,num
转换很简单:
ostringstream ostr;
ostr << setw(len) << setfill('0') << i;
例如,给定i
为 123,结果为“00123”。然而,对于name
实际上是一个字符字符串和一个整数的混合,我不知道如何复制sprintf
看起来如此容易的东西。我尝试了这种变化:
ostr << setw(len) << left << "Customer # " << i << setfill(' ');
给定相同的 值i
,结果始终为“Customer # 123”,即整数始终右对齐,无论left
、right
或internal
或各个部分的位置如何组合。似乎唯一的解决方案(我还没有尝试过)是首先将“客户#”和 连接i
到一个单独的ostringstream
然后将左对齐的变量插入到ostr
变量中。我错过了什么吗?还有其他方法吗?
更正:正如评论中所讨论的,在简化示例时,我忽略了sprintf
实际上负责填充名称的第二个。ostringsteam
因此,还需要第二个输出来实现这一点。
解决方案
推荐阅读
- javascript - 不要在循环中创建函数,.then 应该返回一个值或抛出
- javascript - Javascript - 如何对这样一个数组中的值求和?
- export - 如何从 Progress OpenEdge 数据库服务器导出数据
- javascript - Gatsby createPages 生命周期方法在 onCreateNode 方法完成添加所需节点字段之前运行
- r - 有没有办法使用 R 将不同年级的学生列表放入不同的班级选项中?
- react-native - 在导航屏幕之前反应本机等待用户登录
- python-3.x - 将所有系统字体列为字典。| Python
- ios - 如何从详细视图控制器以编程方式推送视图控制器
- python-3.x - 为每个循环创建和添加行
- vba - VBA - Sharepoint 签出和签入非 excel 文件