Как преобразовать целое число в строку переносимо? - PullRequest
6 голосов
/ 09 февраля 2010

Я искал способ преобразовать целое число в строку переносимым способом (переносимым среди по крайней мере Windows & Linux и x86 и x86_64), и я, хотя itoa(X) был бы стандартным, как atoi(1).

Но я прочитал следующее в записи в Википедии:

Функция itoa - это широко распространенное нестандартное расширение стандартного языка программирования Си. Он не может использоваться переносимым образом, так как он не определен ни в одном из стандартов языка Си; однако компиляторы часто предоставляют его через заголовок, находясь в несоответствующем режиме, поскольку это логический аналог стандартной функции библиотеки atoi.

Так что я хотел бы знать, есть ли способ сделать это портативным способом или нет. В случае, если мне нужно написать свою собственную функцию, с какими вещами я должен быть осторожен?

Ответы [ 2 ]

1 голос
/ 09 февраля 2010

Чаще всего вы просто используете printf ("% d");

http://en.wikipedia.org/wiki/Printf

Вы можете использовать sprintf, если вам это нужно в буфере, но как часто вы конвертируете в строку, а не записываете ее в файл или устройство вывода?

0 голосов
/ 09 февраля 2010

Если вы делаете это не слишком часто, как насчет подпрограммы библиотеки времени выполнения, которая записывает несколько цифр в память, анализирует результаты и сохраняет тип кодировки? С этого момента вы просто включаете свой «тип кодировки», чтобы выбрать, какую подпрограмму преобразования использовать.

...