Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将字符串中的索引转换为int_C++_String_Multidimensional Array_Char_Type Conversion - Fatal编程技术网

C++ 将字符串中的索引转换为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,以便填充
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字符集。