Например, есть строка 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;
}
Спасибо за внимание
Чтобы уточнить мой комментарий и ответ ShaltielQuack, чтобы вы знали Зачем вы просто вычитаете персонажа '0'
из цифры, вы можете посмотреть на ASCII таблица.
Там вы увидите, что код ASCII для персонаж '0'
десятичный 48
, Если вы видите код ASCII, например, '1'
это еще один, 49
, Так что если вы делаете '1' - '0'
это то же самое, что делать 49 - 48
что приводит к десятичному значению 1
,
std::string n ("12345");
int a, b, c, d, e;
a = str.at(0);
...
#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
Вы можете попробовать следующий код:
#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 из строки