📜  从C++中的字符串中提取所有整数(1)

📅  最后修改于: 2023-12-03 15:06:33.046000             🧑  作者: Mango

从C++中的字符串中提取所有整数

在C++中,我们可能需要从字符串中提取整数,用于各种计算操作。下面介绍几种方法。

方法一:使用stringstream

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、使用字符串流和使用正则表达式。通过这些方法,我们可以从字符串中提取任何需要的整数。