Как получить цифру из строки?

Например, есть строка n, содержащая «1234».

string n = "1234"

Теперь есть int a, b, c, d для хранения 1, 2, 3, 4 отдельно.

a is 1
b is 2
c is 3
d is 4

Как получить эти цифры из строки «12345» с помощью стандартной функции?


Ранее я использую следующий способ.

int getDigit(string fourDigitString,int order)
{
std::string myString = fourDigitString;
int fourDigitInt = atoi( myString.c_str() ); // convert string fourDigitString to int fourDigitInt
int result;
int divisor = 4 - order;
result = fourDigitInt / powerOfTen(divisor);
result = result % 10;
return result;
}

Спасибо за внимание

0

Решение

Чтобы уточнить мой комментарий и ответ ShaltielQuack, чтобы вы знали Зачем вы просто вычитаете персонажа '0' из цифры, вы можете посмотреть на ASCII таблица.

Там вы увидите, что код ASCII для персонаж '0' десятичный 48, Если вы видите код ASCII, например, '1' это еще один, 49, Так что если вы делаете '1' - '0' это то же самое, что делать 49 - 48 что приводит к десятичному значению 1,

3

Другие решения

std::string n ("12345");
int a, b, c, d, e;

a = str.at(0);
...
2

#include <iostream>
using namespace std;

int main() {

string n = "12345";

int a = n[0] - '0';
int b = n[1] - '0';
int c = n[2] - '0';
int d = n[3] - '0';
int e = n[4] - '0';

cout << a << endl;
cout << b << endl;
cout << c << endl;
cout << d << endl;
cout << e << endl;
}

выход:

1
2
3
4
5

2

Вы можете попробовать следующий код:

#include <string>
#include <sstream>

int main() {
std::string s = "100 123 42";
std::istringstream is( s );
int n;
while( is >> n ) {
// do something with n
}
}

из этого вопроса: расщепление int из строки

1
По вопросам рекламы [email protected]