使用stoi()将字符串数组元素转换为c ++中的int?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用stoi()将字符串数组元素转换为c ++中的int?相关的知识,希望对你有一定的参考价值。

我有一段代码:

#include <bits/stdc++.h>
using namespace std;

int main() {
//ios_base::sync_with_stdio(false);
string s[5];

s[0] = "Hello";
s[1] = "12345";

cout << s[0] << " " << s[1] << "
"; 
cout << s[0][0] << " " << s[1][1] << "
";

int y = stoi(s[1]);          //This does not show an error
cout <<"y is "<< y << "
";
//int x = stoi(s[1][1]);       //This shows error
//cout <<"x is "<< x << "
";
return 0;
}

此代码的输出是:

Hello 12345  
H 2  
y is 12345

但是当我取消注释时它会显示错误

int x = stoi(s[1][0]);
cout <<"x is "<< x << "
";

如果在两种情况下使用string函数将int转换为stoi(),那么为什么后面的代码部分会出错呢? 我使用atoi(s[1][0].c_str())尝试过相同但它也给出了错误。

如果我想将第二种类型的元素转换为int,那么替代方法是什么?

答案

s[1]是一个std::string,所以s[1][0]是该字符串中的单个char

std::stoi()作为输入调用char不起作用,因为它只需要一个std::string作为输入,而std::string没有一个只需要一个char作为输入的构造函数。

要做你正在尝试的事情,你需要这样做:

int x = stoi(string(1, s[1][0]));

要么

int x = stoi(string(&(s[1][0]), 1));

你对atoi()的调用不起作用,因为你试图在单个c_str()而不是它所属的char上调用std::string,例如:

int x = atoi(s[1].c_str());
另一答案

stoi输入一个字符串而不是char。试试这个:

string str(s[0][0]);
int y = stoi(str);

以上是关于使用stoi()将字符串数组元素转换为c ++中的int?的主要内容,如果未能解决你的问题,请参考以下文章

如何在配置单元中将字符串转换为数组?

C语言中,如何将一个数组中的数值转换成字符串输出?

使用 .NET 系统将字符数组转换为字符串? [复制]

如何将 C++ 或 C 中的字符串转换为整数数组?

标准C语言中如何将字符串中的内容转换为字符数组?

C语言中,如何将一个数组中的数值转换成字符串输出?