Как я могу преобразовать символ из строки в целочисленную переменную, используя C ++ - PullRequest
1 голос
/ 13 февраля 2020
string phone_nb = "173";
char just_one_char = phone_nb[1];
int i_just_one_char = stoi(just_one_char);

Я получаю эти ошибки:

no matching function for call to 'stoi'
int i_just_one_char = stoi(just_one_char);

note: candidate function not viable: no known conversion from 'char' to 'const std::__1::string' (aka 'const basic_string<char, char_traits<char>, allocator<char> >') for 1st argument
_LIBCPP_FUNC_VIS int                stoi  (const string& __str, size_t* __idx = 0, int __base = 10);

note: candidate function not viable: no known conversion from 'char' to 'const std::__1::wstring' (aka 'const basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >') for 1st argument
_LIBCPP_FUNC_VIS int                stoi  (const wstring& __str, size_t* __idx = 0, int __base = 10);

Ответы [ 2 ]

4 голосов
/ 13 февраля 2020

Вы можете попробовать что-то вроде этого:

#include <iostream>
#include <string>

int main() {
    std::string phone_nb = "173";
    int i_just_one_char = phone_nb[0] - '0';
    std::cout << i_just_one_char;
}

Что работает, полагаясь на то, как символы / ASCII структурированы для преобразования из символа в его целочисленный эквивалент.

Приведенный выше код выведет 1.

0 голосов
/ 13 февраля 2020

Самым простым решением для вашего кода было бы просто использовать atoi вместо stoi Вы можете изменить свой код следующим образом:

string phone_nb = "173";
char just_one_char_str[2];
just_one_char_str[0] = phone_nb[1];
just_one_char_str[1] = '\0';
int i_just_one_char = atoi(just_one_char);

Вы можете прочитать больше на atoi() здесь

Альтернатива

Как упомянуто @RemyLebeau, можно также использовать функцию substr() и получить аналогичный результат или также можно использовать ответ @ Rietty

string phone_nb = "173";
string just_one_char = phone_nb.substr(0, 1);
int i_just_one_char = stoi(just_one_char);
...