📅  最后修改于: 2023-12-03 14:59:45.290000             🧑  作者: Mango
SplitString是C++中一个简单、易用的字符串分割函数,可以按照指定的分隔符将一个字符串分割成多个字符串。本文将介绍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函数的示例程序,该程序从命令行参数中读取一个文件名和一个分隔符,在读取文件时按照指定的分隔符将每行文本分割成多个字符串,并输出每个字符串。
#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是要读取的文件名,逗号是分隔符。程序将读取每一行文本,并按照逗号将每一行文本分割成多个字符串,输出每个字符串。