【问题标题】:Coverting an index in a string to an int将字符串中的索引转换为 int
【发布时间】:2017-06-30 08:33:30
【问题描述】:

我想将字符串中的索引转换为 int 以填充 int 类型的二维数组。

string s = "1 2 3";
a[0][0] = s.at(0);

我希望a[0][0] 存储 int 值 1,但现在它使用这种方法存储 49(我假设是直接转换)。

我尝试了atoistoistatic_cast,但出现了转换错误。

【问题讨论】:

  • stoi 应该可以工作。你到底得到了什么错误?
  • 什么是“字符串中的索引”?
  • 这是我得到的错误:“错误:重载‘stoi(char&)’的调用不明确”
  • “字符串中的索引”是指某个索引处的值,例如 s.at(0),即“1”
  • 好的,如果你把字符串看作char的一种数组,它就是一个“字符串的元素”。

标签: c++ string multidimensional-array char type-conversion


【解决方案1】:

之前答错了:

这应该可行:

using namespace std; 
int main ()
{
  string str ("3");
  int i =  str.at(i) - 48;
  cout << i <<endl;
  return 0;
}

【讨论】:

  • 虽然你的答案现在是正确的,但它不是一个好答案。
  • 你说得对,我上面的人有更好的答案 XD。这是因为ascii编码。
  • int i = str.at(i) - '0'; 将更具可读性,并且不依赖于 ASCII 字符集。
【解决方案2】:

当你使用

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];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 2011-03-06
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多