Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

вопрос по рабте с классом string(C++)

10K
11 января 2008 года
Schuler
42 / / 04.04.2007
Подскажите, пожалуйста, можно ли в переменную типа string записать число из переменной типа long.
Я имею в виду без преобразований типа
 
Код:
if(sim==1)
  stroka='1'
320
11 января 2008 года
m_Valery
1.0K / / 08.01.2007
Так что ли ?
 
Код:
...
   string str;
   long sim = 1;
   if(sim==1)
     str="1";
   cout<<str<<endl;
...
10K
11 января 2008 года
Schuler
42 / / 04.04.2007
Да так я и делаю
1
11 января 2008 года
kot_
7.3K / / 20.01.2000
Цитата: Schuler
Подскажите, пожалуйста, можно ли в переменную типа string записать число из переменной типа long.
Я имею в виду без преобразований типа
 
Код:
if(sim==1)
  stroka='1'


[QUOTE=m_Valery] Так что ли ?
Код:

... string str; long sim = 1; if(sim==1) str="1"; cout<<str<<endl; ...
[/QUOTE]
Опа. А пацаны то и не знают о таком :)
А если диапазон значений будет сравним по размеру типа long - это вы типа так и будете проверять? :D

Используйте либо sprintf

 
Код:
long i=1000;

char buffer[32];
sprintf(buffer,"%d",i);

либо ltoa
 
Код:
long i=1000;
char buffer[32];
ltoa(i,buffer,10);
10K
11 января 2008 года
Schuler
42 / / 04.04.2007
Спасибо
320
11 января 2008 года
m_Valery
1.0K / / 08.01.2007
Цитата: kot_
Опа. А пацаны то и не знают о таком :)
А если диапазон значений будет сравним по размеру типа long - это вы типа так и будете проверять? :D

Используйте либо sprintf
...


Та знаем,знаем.Вообще обсуждали недавно уже эту тему.Это рассматривает Герб Саттер "Новые сложные задачина С++".Кстати,он пишет - никогда не используйте sprintf.

 
Код:
long sim = 100000;
    ostringstream stream;
    stream <<sim;
    string str = stream.str();
    cout<<str<<endl;
1
11 января 2008 года
kot_
7.3K / / 20.01.2000
Цитата: m_Valery
Та знаем,знаем.Вообще обсуждали недавно уже эту тему.Это рассматривает Герб Саттер "Новые сложные задачина С++".Кстати,он пишет - никогда не используйте sprintf.
 
Код:
long sim = 100000;
    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;


просто я себе представил (даже учебную) реализацию :)
В третьих - подобной бы рекомендации не было бы, если бы не было бы определенных выгод по использованию потенциально опасных функций. Но, в контексте данной темы это смысла не имет.
Последний вариант - обеими руками согласен - верное решение со всех сторон.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог