如何从字符串 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
等检查所有字符是否都是数字。
我正在尝试了解如何从一个字符串中转换多个整数。我尝试过使用 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
等检查所有字符是否都是数字。