是否可以仅使用sprintf(c ++)格式化负整数/ double,使得符号和值之间有空格?
from this: -1234
to this: - 1234
编辑:它将进入一个字符数组。
答案 0 :(得分:0)
使用sprintf
?的 Not directly, no 强>
您需要自己实现此逻辑(使用abs
/ fabs
和第二个sprintf
参数),或者为国家/地区使用适当的区域设置谁使用此渲染布局,并希望您的实现遵守它。
使用C ++自己的I / O流可能会容易得多,所以请考虑切换到那些。
答案 1 :(得分:0)
试试这个:
char large_evil_array[128];
double my_var = -12.34;
int my_int = -6589;
int chars_formatted =
snprintf(large_evil_array, sizeof(large_evil_array),
"%c %5.2f %c %d\n",
(char)((my_var < 0) ? '-' : ' '),
(double)((my_var < 0) ? (my_var * -1.0) : my_var),
(char)((my_int < 0) ? '-' : ' '),
(int)((my_int < 0) ? (-1 * my_int) : my_int));
如果使用C ++流,则可以编写自己的格式修饰符。
答案 2 :(得分:0)
我意识到这不是问题,但因为它被标记为C ++:
std::ostringstream out;
out << std::internal << std::setw(6) << -1234;
std::string result = out.str();