【问题标题】:Convert Character array to integer array in c++在 C++ 中将字符数组转换为整数数组
【发布时间】:2016-04-15 15:10:57
【问题描述】:

如何转换

char* string=new char[Length];

int* integer=new int[Length];

表示 如何在顶级代码中将字符串转换为整数

【问题讨论】:

  • 要将 C 字符串转换为 int,您可以使用 atoi。但是你的字符串是什么样子的,因为你想把它转换成int[]
  • 很不清楚你在问什么。您能否包括一个输入字符串和一个预期的输出整数数组。最后什么是顶级代码?
  • @mary 什么是“顶级代码”?显示转换示例。
  • 你需要更具体。字符串是否代表整数?如果是,为什么结果包含多个整数?如果不是,“转换”是什么意思?

标签: c++ arrays char int


【解决方案1】:

要将整个字符串转换为一个数字(也许这是您真正想要的?)您应该使用atoi() 函数

如果你想要一个数字数组,那么你可以做一个简单的循环

for (int i=0; i < Length; i++)
    integer[i] = string[i] - '0';

【讨论】:

    【解决方案2】:

    您可能希望拥有明确说明您正在做什么的代码。

    std::transform(std::begin(string), std::end(string),
                   std::begin(integer), [](const char& c) -> int {
                                            return c - '0';
                                        });
    

    编译后的代码应该和 Ilyases 的回答一样。不同之处在于陈述意图。他的代码说“遍历string 并做一些事情”,而我的代码说“转换string 的元素并将结果写入integer

    顺便说一句:请考虑使用std::vector&lt;&gt; 而不是旧的动态数组。它使您不必自己进行所有的内存管理、边界检查等。还要避免使用标准库中的类名作为变量名,因为这可能会导致混淆。 string 不是变量的好名称,integer 两者都不是,至少它与类型名称 int 不同。

    auto myInputStr = std::vector<char>(Length);
    auto myInputAsInts = std::vector<int>(Length);
    

    如果myInputStr 实际上是一个字符串,而不仅仅是其他不相关字符的有序集合,则首选std::string 而不是std::vector&lt;char&gt;std::transform()的用法同上,不管是std::vector&lt;char&gt;还是std::string

    std::transform(std::begin(myInputStr), std::end(myInputStr),
                   std::begin(myInputAsInts), [](const char& c) -> int {
                                                  return c - '0';
                                              });
    

    【讨论】:

      猜你喜欢
      • 2018-10-07
      • 2011-08-13
      • 2018-04-25
      • 2020-07-23
      • 2018-05-18
      • 1970-01-01
      • 2013-11-11
      • 1970-01-01
      相关资源
      最近更新 更多