C++ 将字符串中的索引转换为int
我想将字符串中的索引转换为int,以便填充C++ 将字符串中的索引转换为int,c++,string,multidimensional-array,char,type-conversion,C++,String,Multidimensional Array,Char,Type Conversion,我想将字符串中的索引转换为int,以便填充int类型的2D数组 string s = "1 2 3"; a[0][0] = s.at(0); 我想要a[0][0]来存储int值1,但是现在它用这个方法存储49(我假设是直接转换) 我尝试了atoi、stoi和static\u cast,但我遇到了一个转换错误。之前给出了错误的答案: 这应该起作用: using namespace std; int main () { string str ("3"); int i = str.at(
int
类型的2D数组
string s = "1 2 3";
a[0][0] = s.at(0);
我想要a[0][0]
来存储int值1,但是现在它用这个方法存储49(我假设是直接转换)
我尝试了atoi
、stoi
和static\u cast
,但我遇到了一个转换错误。之前给出了错误的答案:
这应该起作用:
using namespace std;
int main ()
{
string str ("3");
int i = str.at(i) - 48;
cout << i <<endl;
return 0;
}
使用名称空间std;
int main()
{
字符串str(“3”);
int i=str.at(i)-48;
当你使用
a[0][0] = s.at(0);
您正在将字符'1'
的值赋给a[0][0]
,该值在ASCII编码中由整数值49表示
如果您确定只有一个数字,您可以使用
a[0][0] = s.at(0) - '0';
您可以使用更灵活的策略
std::istringstream str(s);
str >> a[0][0];
stoi
应该可以工作。你到底得到了什么错误?什么是“字符串中的索引”?这是我得到的错误:“错误:调用重载的‘stoi(char&)’是不明确的”,通过“字符串中的索引”,我指的是像s.at(0)这样的特定索引处的值,即“1”好的,如果你把字符串看作是一个数组的代码> char ,它将是一个“字符串元素”。虽然你的答案现在是正确的,但是它不是一个很棒的。你是对的,我上面的家伙有一个更好的答案XD。这是因为ASCII编码。<代码> int i=STRAT AT(i)-“0”;
更具可读性,并且不依赖ASCII字符集。