Этот метод не использует потоки, ни sprintf. Кроме наличия проблем блокировки, потоки подвергаются производительности наверху, и действительно излишество. Для потоков издержки прибывают из потребности создать потоковый буфер и пар. Для sprintf издержки прибывают из необходимости интерпретировать строку формата. Это работает, даже когда n отрицателен или когда строковое представление n более длительно, чем len. Это - Быстрое решение.
inline string some_function(int n, int len)
{
string result(len--, '0');
for (int val=(n<0)?-n:n; len>=0&&val!=0; --len,val/=10)
result[len]='0'+val%10;
if (len>=0&&n<0) result[0]='-';
return result;
}
booleanVar?string("true", "false")
Although true/false is default, so
booleanVar?string
should work fine.