Можно ли добавить два индекса строки к символу, чтобы затем преобразовать этот символ в int в c ++? - PullRequest
0 голосов
/ 30 октября 2019

Например, у меня есть string st="1234567", и я хочу добавить st[0] и st[1] к символу ch так, чтобы ch = 12, а затем преобразовать это в int x так, чтобы x = 12.

Есть ли способ сделать это?

1 Ответ

3 голосов
/ 30 октября 2019

Вы можете достичь этого следующим образом:

int x = 10*(st[0]-'0') + (st[1]-'0');

Это работает, потому что вычитание '0' из char, представляющего число, приводит к тому фактическому числу. Например, '5' - '0' == 5.


char ch, так что ch = 12

Это невозможно, хотя. Вы можете сделать char ch = 12, но это не будет представлять 12, что, скорее всего, просто приведет к тому, что может быть не для печати. В ASCII это будет «подача формы», и если вы попытаетесь распечатать это, возможно, можно будет вставить новую строку (или перейти к следующей странице, если ваш редактор поддерживает это). Если вы хотите, чтобы строка содержала "12", вы можете сделать это следующим образом:

std::string twelve = st.substr(0, 2);

И оттуда общий способ преобразования в int будет

int x = std::stoi(twelve);
...