📅  最后修改于: 2023-12-03 15:06:33.046000             🧑  作者: Mango
在C++中,我们可能需要从字符串中提取整数,用于各种计算操作。下面介绍几种方法。
stringstream是一个类,它可以将字符串中的数据转换成任何其他数据类型。可以通过简单的while循环和stringstream将字符串转换为整数数组。
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
int main() {
std::string str = "10 20 30 40 50";
std::stringstream ss(str);
std::vector<int> vec; // 存储整数的数组
int num;
while (ss >> num) vec.push_back(num);
for (int i = 0; i < vec.size(); i++)
std::cout << vec[i] << " ";
return 0;
}
输出:
10 20 30 40 50
stringstream也可以用于将整数转换为字符串,std::to_string函数也可以将整数转换为字符串。可以通过字符串流来解析整数字符串。
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
void parseIntegers(const std::string &str, std::vector<int> &vec) {
std::istringstream iss(str); // 字符串流
std::string temp;
while (iss >> temp) {
try { // 将字符串转换为整数
int num = std::stoi(temp);
vec.push_back(num);
} catch (...) {
continue;
}
}
}
int main() {
std::string str = "10 20 30 40 50";
std::vector<int> vec; // 存储整数的数组
parseIntegers(str, vec);
for (int i = 0; i < vec.size(); i++)
std::cout << vec[i] << " ";
return 0;
}
输出:
10 20 30 40 50
C++11提供了一个很好的正则表达式库,C++标准库中包含regex库。可以使用regex库将整数字符串转换为整数数组。
#include <iostream>
#include <regex>
#include <string>
#include <vector>
void parseIntegers(const std::string &str, std::vector<int> &vec) {
std::regex reg("\\d+"); // 匹配数字的正则表达式
std::sregex_iterator pos(str.begin(), str.end(), reg);
std::sregex_iterator end;
while (pos != end) {
try { // 将字符串转换为整数
int num = std::stoi(pos->str());
vec.push_back(num);
} catch (...) {
continue;
}
pos++;
}
}
int main() {
std::string str = "10 20 30 40 50";
std::vector<int> vec; // 存储整数的数组
parseIntegers(str, vec);
for (int i = 0; i < vec.size(); i++)
std::cout << vec[i] << " ";
return 0;
}
输出:
10 20 30 40 50
本文介绍了C++中从字符串中提取整数的三种方法:使用stringstream、使用字符串流和使用正则表达式。通过这些方法,我们可以从字符串中提取任何需要的整数。