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

C++ Can I assign an int by using string::at?

在我的代码中我有这个:

int enemyNumber = numberType.at(0);

numberType 是一个字符串。

string numberType中的第一个字符是“1”。但是 int enemyNumber 在该赋值后变为 48。

这是怎么回事,如何让 enemyNumber 变为“1”?

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

'0''9'的单个字符转换为对应的数字,减去'0'的值:

int enemyNumber = numberType.at(0) - '0';

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

// 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
}

如果您想留在字符串对象中,可以执行以下操作:

#include <string>
#include <iostream>

int main()
{
    std::string numberType("1234");
    const int enemyNumber = std::stoi( numberType.substr(0,1) );

    std::cout << enemyNumber;
    return 0;
}

stoi() 将为您完成从字符串到整数的转换。