C++ snprintf,带“%0*d",论据太少
我需要动态生成一个字符串,如下所示: 001/192 但是,数字的数量是不同的,因此我必须定义另一个变量,称为print_width,在本例中是192%10C++ snprintf,带“%0*d",论据太少,c++,string-formatting,C++,String Formatting,我需要动态生成一个字符串,如下所示: 001/192 但是,数字的数量是不同的,因此我必须定义另一个变量,称为print_width,在本例中是192%10 snprintf ( statusString , 30 , "%0*d / %0*d" , snprintf_width , completed[tid] , total[tid]); 上面的代码提出了一个编译器警告:参数太少,并且无法工作您需要两次宽度(您有*两次)对于格式中的每个*以及每个d,您都需要一个整数宽度参数。您已经提供了必
snprintf ( statusString , 30 , "%0*d / %0*d" , snprintf_width , completed[tid] , total[tid]);
上面的代码提出了一个编译器警告:参数太少,并且无法工作您需要两次宽度(您有*两次)对于格式中的每个
*
以及每个d
,您都需要一个整数宽度参数。您已经提供了必需的4个参数中的3个,编译器很乐意告诉您,而不是在运行时产生垃圾
因此,例如:
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";