dai*_*isy 2 c++ string-formatting
我需要动态生成如下字符串:
001/192
但是,位数会有所不同,因此我必须定义另一个名为print_width的变量,在这种情况下:192%10
snprintf ( statusString , 30 , "%0*d / %0*d" , snprintf_width , completed[tid] , total[tid]);
Run Code Online (Sandbox Code Playgroud)
上面的代码提出了一个编译器警告:参数太少,而且没有工作
*每种d格式都需要一个整数宽度参数.你已经提供了3个必需的4个参数,你的编译器很友好地告诉你,而不是在运行时产生垃圾.
因此,例如:
if (snprintf(statusString, sizeof(statusString), "%0*d / %0*d", snprintf_width,
completed[tid], snprintf_width, total[tid]) >= sizeof(statusString))
throw "Oops - string was too small for data";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1066 次 |
| 最近记录: |