URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6691
[ Назад ]

Исходное сообщение
"Как перевести число в строку??? С++"

Отправлено Doom , 21-Авг-07 09:10 
Помогите пожалуйста. Не знаю как под UNIX в С++ это сделать. В досе были функции itoa, fcvt

Содержание

Сообщения в этом обсуждении
"Как перевести число в строку??? С++"
Отправлено DeadMustdie , 21-Авг-07 09:40 
>Помогите пожалуйста. Не знаю как под UNIX в С++ это сделать. В
>досе были функции itoa, fcvt

Дело вкуса, но лично мой любимый вариант - sscanf().
Бывают еще любители std::stringstream'а :)


"Как перевести число в строку??? С++"
Отправлено vic , 21-Авг-07 11:22 
>>Помогите пожалуйста. Не знаю как под UNIX в С++ это сделать. В
>>досе были функции itoa, fcvt
>
>Дело вкуса, но лично мой любимый вариант - sscanf().

Имел в виду sprintf(), да? =)

>Бывают еще любители std::stringstream'а :)

да пора юзать boost (lexical_cast) и modern с++, но аккуратненько =)



"Как перевести число в строку??? С++"
Отправлено DeadMustdie , 21-Авг-07 11:44 
>Имел в виду sprintf(), да? =)

Угу.

>да пора юзать boost (lexical_cast) и modern с++, но аккуратненько =)

Да ну их, писанины больше. Разве что на выходе требуется std::string.


"Как перевести число в строку??? С++"
Отправлено anonymous , 21-Авг-07 09:43 
>Помогите пожалуйста. Не знаю как под UNIX в С++ это сделать. В
>досе были функции itoa, fcvt

man strtol
...
NAME
       strtol, strtoll, strtoq - convert a string to a long integer


"Как перевести число в строку??? С++"
Отправлено anonymous , 21-Авг-07 09:48 
Да, кстати itoa -- нестандартная функция:
The itoa function is a widespread non-standard extension to the standard C programming language. It cannot be portably used, as it is not defined in any of the C language standards; -- http://en.wikipedia.org/wiki/Itoa

Зато:
man strtol
...
CONFORMING TO
       strtol() conforms to SVr4, 4.3BSD, C99 and POSIX.1-2001, and strtoll() to C99 and POSIX.1-2001.


"Как перевести число в строку??? С++"
Отправлено kriogen , 21-Авг-07 09:53 
если нет условия "использовать стандарты", то можно и boost::lexical_cast<string>()

"Как перевести число в строку??? С++"
Отправлено Ray Dudu , 21-Авг-07 10:46 
>если нет условия "использовать стандарты", то можно и boost::lexical_cast<string>()

пример на С:
char str[10];
int a = 512;

sprintf(str, "%9d", a);

на С++ способов намного больше, какой использовать зависит от задачи...


"Как перевести число в строку??? С++"
Отправлено vic , 21-Авг-07 11:42 
>если нет условия "использовать стандарты", то можно и boost::lexical_cast<string>()

Э-э, надо использовать стандарты всегда ;)
Нет условия - поставь себе сам такое условие - меньше проблем в будущем.

boost кроссплатформенный, частично войдет в следующий стандарт, войдет ли lexical_cast не помню (стыдно однако). Далее автору топика: на rsdn.ru сделай поиск по "lexical_cast" найдешь кучу тем с обсуждением вопроса преобразования строка-число, число-строка, что лучше, что хуже и т.п. Там же обсуждение почему lexical_cast медленный, это так, но на то есть причины, но его прелесть в том что он будет работать и с wstring в том числе и с учетом локализации.


"Как перевести число в строку??? С++"
Отправлено Doom , 24-Авг-07 06:22 
Всем большое спасибо. sprintf самое то. Я в си под unix еще мало знаю. Руководствуюсь обычными знаниями c++. Когда-то, чтобы не разбираться с этой проблемой записывал числа в текстовый файл, а потом читал :)