如何从字符串 C++ 中读取多个整数

How To Read Multiple Integers from a String C++

我正在尝试了解如何从一个字符串中转换多个整数。我尝试过使用 atoi()stoi()istringstream(),它们都做同样的事情。我只能得到一个整数。

例如,如果字符串是 "Chocolate and Milk 250 pounds and 2 oz or 1.5 coins." 以上所有功能都将不起作用。它不会占用整个字符串。如果我只留下一个数字,那么它将起作用。我希望能够读取整个字符串并仅获取所有 整数 (而不是 float)。

我正在为字符串使用 while(getline())。然后试着把它变成字符串。

虽然,如果我只能 return 字符串中的整数总数会更好。无论哪种方式,我都在努力学习这两种方式。在这种情况下,输出将是 "2",因为只有两个 int.

一种方法是将字符串用作分隔符并在各个字符串上使用 stoi 来检查它们是否为整数。

#include <iostream>
#include <sstream>
#include <string>

int main(){
    std::string s = "Chocolate and Milk 250 pounds and 2 oz or 1.5 coins.";
    int count = 0;
    std::istringstream iss(s);
    std::string token;
    while(getline(iss,token,' ')){
        if(std::isdigit(token[0]) &&stoi(token) && token.find('.')==std::string::npos){
            count++;
        }
    }

    std::cout<<count<<std::endl;
}

请注意,如果 stoi 成功但输入不是有效整数,则可以对字符串进行更复杂的检查。你可以有一个辅助函数,它通过使用 isdigit 等检查所有字符是否都是数字。