C++我可以使用string :: at分配一个int吗?

Bra*_*-NB 1 c++ string int variable-assignment

在我的代码中我有这个:

int enemyNumber = numberType.at(0);
Run Code Online (Sandbox Code Playgroud)

numberType 是一个字符串.

第一个字符string numberType是'1'.但int enemyNumber在该任务之后变为48.

发生了什么,怎么让敌人的数字变成'1'?

Mik*_*our 7

从转换的单个字符,用一个值'0''9',到相应的数,减去的值'0':

int enemyNumber = numberType.at(0) - '0';
Run Code Online (Sandbox Code Playgroud)

如果要转换包含多个数字的字符串,标准库可以提供帮助:

// C++11 or later
int n = std::stoi(s);

// Historically
int n = std::atoi(s.c_str());  // no error checking

std::istringstream ss(s);
if (ss >> n) {
     // success
}
Run Code Online (Sandbox Code Playgroud)


izo*_*ica 6

这是因为48是字符代码1.要获得整数值,推导出'0'类似于:int enemyNumber = numberType.at(0) - '0';.这样你会得到的字符代码'1'减去的字符代码'0'这即是1.这适用于所有数字,因为它们的字符代码是连续数字.