Доброго времени суток!
Только недавно начал изучать с++ и столкнулся с такой проблемой. Есть строка string sem="12345" необходимо какой-либо элемент из этой строки перевести в число(int), т.е. например 3-ий элемент(символ '4') преобразовать в число int b. Как правильно это сделать?
сорри, инет глюканул - два раза тему создал.
i-ый символ из std::string к int (как правильно преобразовать тип?)
Модератор: Модераторы разделов
-
- Сообщения: 323
- ОС: Debian Lenny
Re: i-ый символ из std::string к int
Код: Выделить всё
int integer=(int)string[3]-48;
можно и без явного приведения
Код: Выделить всё
int integer=string[3]-48;
-
- Сообщения: 384
- Статус: Участник
- ОС: Debian GNU/Linux
Re: i-ый символ из std::string к int
Это проблема разве? Вполне себе рабочая задача... На С могу накропать...
Зачем хорёк пошел в ларёк, зачем барсук полез на сук...
Мораль легко уразуметь: зачем на бал пришёл медведь?
Мораль легко уразуметь: зачем на бал пришёл медведь?
-
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
Re: i-ый символ из std::string к int
Как правильно -- не знаю. Наверное, через stringstream.
А чтобы просто сделать -- отними от нее ноль.
int b = sem[3] - '0';
Работает только для цифр, разумеется...
А чтобы просто сделать -- отними от нее ноль.
int b = sem[3] - '0';
Работает только для цифр, разумеется...
-
- Сообщения: 373
- ОС: Fedora 17 x86_64
Re: i-ый символ из std::string к int
Благодарю всех за помощь! Сделал по предложенному варианту Uncle_Theodore. Тему можно закрывать.
-
- Сообщения: 694
Re: i-ый символ из std::string к int
Uncle_Theodore писал(а): ↑02.03.2008 03:21А чтобы просто сделать -- отними от нее ноль.
int b = sem[3] - '0';
Работает только для цифр, разумеется...
А есть кодировки, где цифры не подряд идут?
-
- Сообщения: 73
- ОС: KUbuntu 8.04 Hardy Heron
Re: i-ый символ из std::string к int
А есть кодировки, где цифры не подряд идут?
Вряд ли.
Ну можно вообще использовать монструозную конструкцию switch на каждый символ, если уж так все серьезно
-
- Сообщения: 636
- ОС: Debian GNU/Linux
Re: i-ый символ из std::string к int
Zeus писал(а): ↑02.03.2008 13:51Uncle_Theodore писал(а): ↑02.03.2008 03:21А чтобы просто сделать -- отними от нее ноль.
int b = sem[3] - '0';
Работает только для цифр, разумеется...
А есть кодировки, где цифры не подряд идут?
Такой кодировки нет и быть не может. K&R тоже гарантируют, что цифры и буквы идут подряд.