从字符串中提取单个字符并将其转换为 int

Pulling a single char from a string and converting it to int

我正在尝试从字符串中提取特定的字符并将其转换为整数。我尝试了以下代码,但我不清楚为什么它不起作用,也无法找到进行转换的方法。

int value = 0;
std::string s = "#/5";

value = std::atoi(s[2]);  // want value == 5

您应该更仔细地阅读 atoi() 的手册页。实际原型为:

 int atoi(const char *string)

您试图传递单个字符而不是指向字符数组的指针。换句话说,通过使用 s[2] 您正在取消引用指针。您可以改为使用:

 value = std::atoi(s+2);

或者:

 value = std::atoi(&s[2]);

此代码不会取消引用指针。

std::atoi 的参数必须是 char*,但 s[2]char。您需要使用它的地址。要从 std::string 中获取有效的 C 字符串,您需要使用 c_str() 方法。

value = std::atoi(&(s.c_str()[2]));

你应该得到一个错误,指出参数类型不正确。

你可以写:

std::string s = "#/5";
std::string substring = s.substr(2, 1);
int value = std::stoi(substring);

使用std::stringsubstr方法将要解析的子串提取为整数,然后使用stoi(取一个std::string ) 而不是 atoi(需要 const char *)。

您可以从一个字符创建 std::string 并使用 std::stoi 转换为整数。

#include <iostream>
#include <string.h>
using namespace std;

int main() {
  int value = 0;
  string s = "#/5";
  value = stoi(string(1, s[2])); //conversion
  cout << value;
}