如何在 C++ 中将数字字符串转换为 int 数组 [重复]

Posted

技术标签:

【中文标题】如何在 C++ 中将数字字符串转换为 int 数组 [重复]【英文标题】:How to convert a numerical string into an int array in C++ [duplicate] 【发布时间】:2017-10-02 23:52:08 【问题描述】:

假设我有一个字符串“12345”但想把它变成一个数组,什么代码或函数允许我这样做?

示例: 我输入:“12345”,我希望它在 C++ 中变成数组(与键入相同)[1、2、3、4、5]。我知道函数 stoi.("12345") 将字符串转换为整数,但是我将如何使该整数成为数组?

【问题讨论】:

这就是你想要的。您尝试过什么 欢迎来到 ***.com。请花点时间阅读the help pages,尤其是名为"What topics can I ask about here?" 和"What types of questions should I avoid asking?" 的部分。也请take the tour 和read about how to ask good questions。最后请学习如何创建Minimal, Complete, and Verifiable Example。 另外,为了进一步说明,您希望“数组”是字符数组还是整数数组? 我感觉很好,这里有一些提示:如果你有一个包含数字的std::string,那么你可以循环它。第一个字符将是'1'(在您的示例中)。只需减去字符'0',您就可以轻松地将字符从字符转换为对应的数字等效数字。 IE。 '1' - '0' == 1 迭代整数的数字很困难。如果你有一个字符串,那么迭代字符串的“数字”(真正的字符)会容易得多。正如我之前的评论中提到的,您可以轻松地将字符中的数字转换为其对应的“整数”值。 【参考方案1】:

你可以写这样的函数:

std::vector<int> toIntArray(const std::string& str) 
    const std::size_t n = str.length();

    std::vector<int> digits(n);
    for (std::size_t i = 0; i < n; ++i)
        digits[i] = str[i] - '0';  // converting character to digit

    return digits;

或者如果你不能使用std::vector:

void toIntArray(int* digits, const char* str) 
    while (*str) 
        *digits++ = *str++ - '0';
    

但您必须确信数组大小足以存储所有数字。

【讨论】:

或者使用内置函数。 coliru.stacked-crooked.com/a/e9fdbe001e9d0df4 我只能使用 感谢您抽出时间向我解释这一点。真的很感激。 @DavidZhu 如果您没有更多问题,请将我的回答标记为已接受。 @boriaz50 那里

以上是关于如何在 C++ 中将数字字符串转换为 int 数组 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

当我不使用标准字符串时,如何在 C++ 中将字符串转换为 int?

如何在 Matlab 中将字符串单元格数组转换为 int 和 NaN?

如何在c ++中将int数组转换为字节数组[重复]

如何在 C++ 中将数字转换为字符串,反之亦然

在 C++ 中将数字转换为字符串的最佳方法? [复制]

如何在 C++ 中将字符串转换为 int?