我有一段代码:
#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";
如果在两种情况下都使用string
将int
转换为stoi()
函数然后为什么后面的代码部分会出错?
我使用atoi(s[1][0].c_str())
尝试过相同的操作,但它也会出错。
如果我想将第二种类型的元素转换为int?
,有什么替代方法答案 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>