Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Получение символа из string'а


Автор: Игорь1024 4.10.2010, 06:39
Есть массив int и переменная string.
Как перезаписать каждый элемент string'а (там только числа) в массив int?
(В смысле std::string buffer="231"; Но a[0]=2; a[1]=3 итд.- надеюсь внятно объяснил)
Пробовал:

...
int a[3];
std::string buffer="231";
for(int j=0;j<buffer.length();j++)
{
a[j]=atoi(&buffer.at(j));
cout<<a[j++];
}
...
Понятное дело из числа просто-напросто убираются разряды (при выводе)-atoi всю строку переводит .
Может через strtol как-нибудь можно?
Заранее благодарен.

Автор: cutwater 4.10.2010, 07:28
Для случая, когда заведомо известно, что строка состоит из символов [0-9]

Код

int a[3];
std::string buffer="231";
for(int j=0;j<buffer.length();j++)
{
    a[j] = buffer[j] - '0';
    cout<<a[j];
}

Автор: Игорь1024 4.10.2010, 08:01
я пробовал так, только без вычитания нуля. {сейчас всё работает}
Можете объяснить смысл этой операции?

Автор: azesmcar 4.10.2010, 08:11
Цитата(Игорь1024 @  4.10.2010,  08:01 Найти цитируемый пост)
Можете объяснить смысл этой операции? 

в строке числа хранятся как символы, а хранение символа это всего лишь хранение его кода.
Например
код символа '0' = 48
код символа '1' = 49
код символа '2' = 50
код символа '3' = 51
...
и так далее
т.е. в строке ("231") на самом деле храниться массив из чисел
'2', '3', '1'
а это
50, 51, 49
вычитая '0' (т.е. 48) мы получаем реальное число

Автор: Игорь1024 4.10.2010, 08:47
cutwater, azesmcar, спасибо за помощь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)