是否有可能僅使用sprintf(C++)格式化負整數/雙數據的方式,使符號和值之間有空格?使用sprintf格式負整數/雙
from this: -1234
to this: - 1234
編輯:它將進入一個字符數組。
是否有可能僅使用sprintf(C++)格式化負整數/雙數據的方式,使符號和值之間有空格?使用sprintf格式負整數/雙
from this: -1234
to this: - 1234
編輯:它將進入一個字符數組。
我意識到,這不是問題,但由於這是標記爲C++:
std::ostringstream out;
out << std::internal << std::setw(6) << -1234;
std::string result = out.str();
它做得非常好!謝謝! – bevolasko
With sprintf
? Not directly, no。
您需要自己實現這個邏輯(使用abs
/fabs
和第二sprintf
參數),或使用適當的區域設置爲誰使用這種渲染布局,並希望您的實現通過其遵守的國家。
使用C++自己的I/O流可能會更容易,所以請考慮切換到那些。
試試這個:
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++流,你可以寫你自己的格式修改。
純粹出於好奇,爲什麼你要這個格式?有些國家是否在數字前用空格格式化負數? – Bojangles
這個文檔很清楚你可以做什麼,不能做什麼... http://www.cplusplus.com/reference/cstdio/printf/ –
@Bojangles:我已經看到了一些報告,帶符號的正數和負數。 –