1
string test;
test="3527523";
int a=test[3];
std::cout<<a<<std::endl;

我期望输出是 7 号,但我得到了 55 号。我搜索了不同的帖子,他们都使用这种方法没有任何问题。我只是不知道我的问题出在哪里。谢谢您的帮助!

4

5 回答 5

6

test[3]return char,您将其转换为整数,因此它返回字符的 ASCII 值。3在 ASCII 中是55.

尝试使用char以下类型a

char a = test[3];

std::cout << a; // 3

如果您希望结果为整数,请从 中减去字符'0'

std::string test = "3527523";

int a = test[3] - '0';

std::cout << a; // 3
于 2013-05-11T00:18:03.733 回答
0

您可以通过括号获得字符“7”,其 ASCII 码为 55 (48+7)。

于 2013-05-11T00:17:35.077 回答
0

问题是您分配test[3]给 type 的变量int,从而导致打印实际的字符代码 (55) 而不是表示的字符 ( '7')。替换intcharstatic_cast在打印之前。

于 2013-05-11T00:20:09.393 回答
0

使用 atoi:

int atoi (const char * str); //将字符串转换为整数

例如:

string test;
test="3527523";
const char c = test[3];
int a=atoi(&c);
std::cout<<a<<std::endl;
于 2013-05-11T00:25:29.780 回答
0

你不“投”,你“转换”。

您可以使用 sscanf()、atoi() 等函数来转换字符串的值:

int iret = sscanf (test, "%d", &a);

test[3] 的值是 ASCII 字符“7”,实际上是整数“55”。

PS:“sscanf()”的美妙之处在于,您可以通过检查“iret!= 1”轻松检测是否发生解析错误。

于 2013-05-11T00:20:50.043 回答