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

时间:2017-12-17 19:08:28

标签: c++ arrays string type-conversion 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] << "\n"; 
cout << s[0][0] << " " << s[1][1] << "\n";

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

此代码的输出为:

Hello 12345  
H 2  
y is 12345

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

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

如果在两种情况下都使用stringint转换为stoi() 函数然后为什么后面的代码部分会出错? 我使用atoi(s[1][0].c_str())尝试过相同的操作,但它也会出错。

如果我想将第二种类型的元素转换为int?

,有什么替代方法

2 个答案:

答案 0 :(得分:0)

char con='r'; while(con != 'n' || con != 'y') { printf("Would you like to play again? (y/n): "); con=getch(); } 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());

答案 1 :(得分:-1)

stoi输入的字符串不是字符。 试试这个:

<td>@string.Join(",", lp.PolicyDocumentsCatagory.Select(x => x.CategoryID))</td>