С++ не обижайте! Такие преобразования между числами и строками должны решаться не средствами языка, а библиотеками. С++ и С это С++ и С. И не их задача решать сложные комплексные задачи перевода чисел в строки, имеющие множество вариантов в своих решениях.
> мммм, тогда такой вопрос от неопытного человека опытному, это нормально ради обычного преобразования типов подключать boost?
Если только ради этого - нет. Как уже сказали, буст можно рассматривать, как стандартную плюсовую библиотеку, ибо официальная по сравнению с другими языками крайне бедно выглядит.
> Не хочешь boost? Подключай wxWidgets! Там тоже всё просто и удобно делается:
> const char* mystr = wxString::Format(wxT("%d"), number).mb_str()
а ничего что ты берешь буфер от временного объекта, который тут же разрушается? если с gcc такое в большинстве случаев и будет работать, то с msvc тут очень большая вероятность словить креш
>>std::string умеет мимикрировать под обычную C-строку, поэтому слегка извернувшись можно использовать atoi/itoa.
Нельзя, c_str() дает const
Этот конст замечательно зохавает atoi() и не поморщится =) Ну а для обратного преобразования, которое нужно топикстартеру, да, придется временный буффер заюзать
>а ничего что ты берешь буфер от временного объекта, который тут же разрушается? если с gcc такое в большинстве случаев и будет работать, то с msvc тут очень большая вероятность словить креш
Почему тут же? До конца метода объект wxString полностью в моём распоряжении. Именно так под msvc и делаю.
> Почему тут же? До конца метода объект wxString полностью в моём распоряжении.
за исключением того факта, что у него отрабатывает деструктор и ты получаешь указатель на область памяти, которая «официально» считается уже неиспользуемой, какие веселые и «случайные» баги( особенно при -O2 ) можно из-за этого словить думаю рассказывать не стоит, потому я б рекомендовал не ленится и делать так: