📜  c++ splitstring 示例 - C++ (1)

📅  最后修改于: 2023-12-03 14:59:45.290000             🧑  作者: Mango

C++ SplitString示例

SplitString是C++中一个简单、易用的字符串分割函数,可以按照指定的分隔符将一个字符串分割成多个字符串。本文将介绍SplitString函数的使用方法,并给出一个示例程序。

SplitString函数的使用方法

SplitString函数的定义如下:

std::vector<std::string> SplitString(const std::string& str, const std::string& delim);

其中,str是要分割的字符串,delim是分隔符。SplitString函数的返回值是一个字符串向量,其中的每个元素都是分割后的一个子串。

下面是SplitString函数的使用示例:

std::string str = "SplitString is a useful C++ function";
std::vector<std::string> tokens = SplitString(str, " ");
for (const auto& token : tokens) {
    std::cout << token << std::endl;
}

输出结果为:

SplitString
is
a
useful
C++
function
SplitString示例程序

下面是一个使用SplitString函数的示例程序,该程序从命令行参数中读取一个文件名和一个分隔符,在读取文件时按照指定的分隔符将每行文本分割成多个字符串,并输出每个字符串。

#include <iostream>
#include <fstream>
#include <vector>
#include <string>

std::vector<std::string> SplitString(const std::string& str, const std::string& delim) {
    std::vector<std::string> tokens;
    size_t last_pos = 0;
    size_t pos = str.find(delim, last_pos);
    while (pos != std::string::npos) {
        tokens.push_back(str.substr(last_pos, pos - last_pos));
        last_pos = pos + delim.size();
        pos = str.find(delim, last_pos);
    }
    tokens.push_back(str.substr(last_pos, pos - last_pos));
    return tokens;
}

int main(int argc, char *argv[]) {
    if (argc < 3) {
        std::cerr << "Usage: " << argv[0] << " filename delimiter" << std::endl;
        return 1;
    }
    const std::string filename = argv[1];
    const std::string delimiter = argv[2];
    std::ifstream infile(filename);
    if (!infile) {
        std::cerr << "Failed to open file: " << filename << std::endl;
        return 1;
    }
    std::string line;
    while (std::getline(infile, line)) {
        std::vector<std::string> tokens = SplitString(line, delimiter);
        for (const auto& token : tokens) {
            std::cout << token << std::endl;
        }
    }
    return 0;
}

示例程序的使用方法如下:

./SplitStringExample input.txt ","

其中,input.txt是要读取的文件名,逗号是分隔符。程序将读取每一行文本,并按照逗号将每一行文本分割成多个字符串,输出每个字符串。