вопрос по рабте с классом string(C++)
Я имею в виду без преобразований типа
stroka='1'
string str;
long sim = 1;
if(sim==1)
str="1";
cout<<str<<endl;
...
Я имею в виду без преобразований типа
stroka='1'
[QUOTE=m_Valery] Так что ли ?
Код:
... string str; long sim = 1; if(sim==1) str="1"; cout<<str<<endl; ...
[/QUOTE]
Опа. А пацаны то и не знают о таком :)
А если диапазон значений будет сравним по размеру типа long - это вы типа так и будете проверять? :D
Используйте либо sprintf
char buffer[32];
sprintf(buffer,"%d",i);
либо ltoa
char buffer[32];
ltoa(i,buffer,10);
А если диапазон значений будет сравним по размеру типа long - это вы типа так и будете проверять? :D
Используйте либо sprintf
...
Та знаем,знаем.Вообще обсуждали недавно уже эту тему.Это рассматривает Герб Саттер "Новые сложные задачина С++".Кстати,он пишет - никогда не используйте sprintf.
ostringstream stream;
stream <<sim;
string str = stream.str();
cout<<str<<endl;
ostringstream stream;
stream <<sim;
string str = stream.str();
cout<<str<<endl;
Да, Саттер хорошо пишет. Так же хорошо пишет Флеминг - "Never say, never again" :)
рекомендация не использовать sprintf верна на 100% (практически любая функция на проверяющая размер буфера опасна) но - во первых - есть варианты с проверкой, во вторых - я говорил о:
if(sim==1)
str="1";
cout<<str<<endl;
просто я себе представил (даже учебную) реализацию :)
В третьих - подобной бы рекомендации не было бы, если бы не было бы определенных выгод по использованию потенциально опасных функций. Но, в контексте данной темы это смысла не имет.
Последний вариант - обеими руками согласен - верное решение со всех сторон.