【问题标题】:how to put a string into an integer array c++如何将字符串放入整数数组c ++
【发布时间】:2013-12-25 20:51:41
【问题描述】:

我有一个字符串,其中包含用户输入的内容

string userstr = "";
cout << "Please enter a string ";
getline (cin, userstr);

然后将字符串存储在 userstr 中,然后我希望将字符串存储在整数数组中,其中每个字符都是数组中的不同元素。我创建了一个动态数组,如下所示:

int* myarray = new int[sizeof(userstr)]; 

但是如何将我的字符串放入该数组中?

【问题讨论】:

  • sizeof(userstr)userstr.length()userstr.size() 不同。
  • C++ String Length?的可能重复

标签: c++ arrays string integer int


【解决方案1】:
int* myarray = new int[ userstr.size() ];

std::copy( usestr.begin(), userstr.end(), myarray ); 

终止的零未附加到数组中。如果你需要它,你应该分配一个多元素的数组并自己放置终止零。

【讨论】:

  • 当我这样做时,我得到这个错误:Windows 在 cw2.exe 中触发了一个断点。这可能是由于堆损坏,这表明 cw2.exe 或其已加载的任何 DLL 中存在错误。这也可能是由于用户在 cw2.exe 获得焦点时按 F12。输出窗口可能有更多的诊断信息。
  • +1。当然,也可以声明myarray,当它超出范围时会自动释放它的内存。即int myarray[ userstr.size() ];
  • 但 userstr 不是常量,它给我一个错误,说表达式必须有一个常量值
  • 哦,看来我明白错误的原因了。您应该动态分配数组。您似乎正在尝试在堆栈中或静态声明它。
  • 哦,我想这个:--> int* myarray = new int[userstr.size()];动态分配数组?
【解决方案2】:

这是一种方法

for(int i=0;i<userstr.length();i++){
    myarray[i] = userstr[i];
}

【讨论】:

    【解决方案3】:

    您可以使用 [] 运算符访问字符串中的每个元素,该运算符将返回对 char 的引用。然后,您可以扣除 char '0' 的 int 值,您将获得正确的 int 表示。

    for(int i=0;i<userstr.length();i++){
        myarray[i] = userstr[i] - '0';
    }
    

    【讨论】:

    • 当我这样做并显示 myarray 时,我只会得到随机数:例如,如果我输入“嘿,我的名字是”,则输出为 006B4D30
    • 我假设输入的内容“应该”是一个 int。如果您想将字符串存储为整数数组,那么您正在做的是存储表示每个字符的整数 - 这是您想要做的吗?如果是这样,我不清楚其目的
    • 抱歉,这就是我想要做的,这是一个非常漫长的一天 o.O
    • 在这种情况下,您只需从代码中删除“-'0'”即可。然后,当您希望将其转换回字符串时,您必须将每个整数转换回字符。例如,如果您想从存储为 int 的字符串中输出第一个字符,只需说 cout
    • 啊,我现在明白了,谢谢
    【解决方案4】:

    您可以简单地使用 isstringstream 将字符串转换为 int,如下所示

    istringstream istringName(intString);
    istringName >> real_int_val;
    

    现在它神奇地变成了一个包含字符串中所有数字的 int 但是我不明白你为什么不把它作为 int 放在首位??

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-13
      • 1970-01-01
      • 2016-07-30
      相关资源
      最近更新 更多