例如,有一个包含“1234”的字符串n。
string n = "1234"
现在,有分别用于存储1,2,3,4的int a,b,c,d。
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 :(得分:3)
要详细说明我的评论和ShaltielQuack的答案,所以你知道为什么你只是从数字中减去字符'0'
,你可能想看一下{{3} }。
在那里,您将看到字符 '0'
的ASCII代码是十进制48
。然后,如果您看到ASCII代码,例如'1'
还有一个,49
。因此,如果您执行'1' - '0'
,则与执行49 - 48
相同,这会产生十进制值1
。
答案 1 :(得分: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 :(得分:2)
std::string n ("12345");
int a, b, c, d, e;
a = str.at(0);
...
答案 3 :(得分:1)
您可以尝试以下代码:
#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
}
}
来自这个问题:splitting int from a string