i-ый символ из std::string к int (как правильно преобразовать тип?)

Модератор: Модераторы разделов

Аватара пользователя
Mifodix
Сообщения: 373
ОС: Fedora 17 x86_64

i-ый символ из std::string к int

Сообщение Mifodix »

Доброго времени суток!
Только недавно начал изучать с++ и столкнулся с такой проблемой. Есть строка string sem="12345" необходимо какой-либо элемент из этой строки перевести в число(int), т.е. например 3-ий элемент(символ '4') преобразовать в число int b. Как правильно это сделать?

сорри, инет глюканул - два раза тему создал.
Спасибо сказали:
Аватара пользователя
wzrd
Сообщения: 323
ОС: Debian Lenny

Re: i-ый символ из std::string к int

Сообщение wzrd »

Код: Выделить всё

int integer=(int)string[3]-48;

можно и без явного приведения

Код: Выделить всё

int integer=string[3]-48;
Спасибо сказали:
promov
Сообщения: 384
Статус: Участник
ОС: Debian GNU/Linux

Re: i-ый символ из std::string к int

Сообщение promov »

Это проблема разве? Вполне себе рабочая задача... На С могу накропать...
Зачем хорёк пошел в ларёк, зачем барсук полез на сук...
Мораль легко уразуметь: зачем на бал пришёл медведь?
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: i-ый символ из std::string к int

Сообщение Uncle_Theodore »

Как правильно -- не знаю. Наверное, через stringstream.
А чтобы просто сделать -- отними от нее ноль. :)

int b = sem[3] - '0';

Работает только для цифр, разумеется...
Спасибо сказали:
Аватара пользователя
Mifodix
Сообщения: 373
ОС: Fedora 17 x86_64

Re: i-ый символ из std::string к int

Сообщение Mifodix »

Благодарю всех за помощь! Сделал по предложенному варианту Uncle_Theodore. Тему можно закрывать.
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: i-ый символ из std::string к int

Сообщение Zeus »

Uncle_Theodore писал(а):
02.03.2008 03:21
А чтобы просто сделать -- отними от нее ноль. :)
int b = sem[3] - '0';
Работает только для цифр, разумеется...

А есть кодировки, где цифры не подряд идут?
Спасибо сказали:
Аватара пользователя
azrael
Сообщения: 73
ОС: KUbuntu 8.04 Hardy Heron

Re: i-ый символ из std::string к int

Сообщение azrael »

А есть кодировки, где цифры не подряд идут?

Вряд ли.
Ну можно вообще использовать монструозную конструкцию switch на каждый символ, если уж так все серьезно :)
Спасибо сказали:
v04bvs
Сообщения: 636
ОС: Debian GNU/Linux

Re: i-ый символ из std::string к int

Сообщение v04bvs »

Zeus писал(а):
02.03.2008 13:51
Uncle_Theodore писал(а):
02.03.2008 03:21
А чтобы просто сделать -- отними от нее ноль. :)
int b = sem[3] - '0';
Работает только для цифр, разумеется...

А есть кодировки, где цифры не подряд идут?



Такой кодировки нет и быть не может. K&R тоже гарантируют, что цифры и буквы идут подряд.
Спасибо сказали: