如何从输入字符串中分离整数并将它们转换为 int 类型以允许对它们进行计算

Posted

技术标签:

【中文标题】如何从输入字符串中分离整数并将它们转换为 int 类型以允许对它们进行计算【英文标题】:How to seperate integers from input string and convert them to type int to allow calculations on them 【发布时间】:2014-08-02 11:21:39 【问题描述】:

正如 Mehdi Algholipour 所写,我想这样做

1.从输入中获取字符串

2.对整数进行单独输入

3.将它们保存到数组中

    cout << "Give me some integers separated with space";

    cin >> string;     // example input 10 210 300 510


    //..some code that seperate input to integer numbers and save them to Array


    //EXPECTED RESULT: Array[0]=10 Array[1]=210 etc...

【问题讨论】:

int array_of_ints[4]; for (int i = 0; i &lt; sizeof(array_of_ints); ++i) cin &gt;&gt; array_of_ints[i];是你想要的吗? 否则我不明白你所说的整数数组的意思然后你说你想要每个字符串直到空格并放入字符串数组中,你的问题还不清楚...... 你可以使用像proposed here这样的解决方案。 对不起,我没有让它变得更容易。 您的意思是您有一个包含数字的字符串,并希望将这些数字提取到整数数组中? 【参考方案1】:

我认为你的意思是:

    从输入中获取string 单独输入Integer 数字 将它们保存到Array

如果这是你的意思,试试这个代码:

string str;
int arr[1000];  // I supposed 1000 is your Int Array size.
int number = 0, index = 0;

getline(cin, str);  // Get a line of string

for (int i = 0 ; i < str.length() ; i++)   // Processing your str Array
    if (isdigit(str[i]))
        number *= 10;
        number += ((int)str[i] - '0');
    
    else 
        arr[index++] = number;
        number = 0;
    

arr[index] = number;    // for last element of your input

// Do something you want

【讨论】:

@Jacob isdigit(int c) 函数需要一个参数,它是一个字符的ASCII Code。当给定ASCII Code 是一个数字(0-9)时,它返回true,否则返回false 关于你的第二个问题,假设我们的输入是12。此代码首先读取1 并设置number *= 10; =&gt; number = 0 * 10 = 0; number += ((int)str[0] - '0'); =&gt; number = number + 1 = 1。下一步,阅读2。现在设置number *= 10; =&gt; number = 1 * 10 = 10; number += ((int)str[1] - '0'); =&gt; number = number + 2 = 12【参考方案2】:

试试:

#include <iostream>
#include <string>
#include <vector>
#include <regex>

int main()

    std::regex rgx("\\b\\d+\\b");

    std::string line;

    std::cout << "Please enter numbers separated by spaces and press enter:" << std::endl;

    std::getline(std::cin, line);

    std::sregex_iterator it(line.begin(), line.end(), rgx);
    std::sregex_iterator end;

    std::vector<int> values;
    std::transform(it, end, std::back_inserter(values), [](std::smatch s) return std::stoi(s.str()); );

    for (int v : values)
        std::cout << v << std::endl;


【讨论】:

【参考方案3】:

使用stringstream:

string str;
getline(cin, str);

stringstream ss(str);
vector<int> vec;

int Integer;
while(true)

    ss >> Integer;
    if(!ss)
        break;

    vec.push_back(Integer);

live demo

注意:您需要包含以下标题:&lt;string&gt;&lt;sstream&gt;&lt;vector&gt;

【讨论】:

以上是关于如何从输入字符串中分离整数并将它们转换为 int 类型以允许对它们进行计算的主要内容,如果未能解决你的问题,请参考以下文章

在 MySQL PHP 中从多行结果中分离行

如何从 PySpark DataFrame 的列中分离特定字符并使用它们形成一个新列?

如何在C#中分配不应该用Int32转换为1的01,并在引用时给出01

如何从 std::string 中获取 2 个字符并将其转换为 C++ 中的 int?

如何将字符串中的多个数字转换为整数

如何从数组列表中分离数据并将其显示到列表视图中?