在C++中解析具有不同字段数的行,可以使用以下方法:
std::getline
和std::istringstream
:#include<iostream>
#include <sstream>
#include<vector>
#include<string>
int main() {
std::string line;
std::getline(std::cin, line);
std::istringstream iss(line);
std::vector<std::string> fields;
std::string field;
while (std::getline(iss, field, ' ')) {
fields.push_back(field);
}
for (const auto& f : fields) {
std::cout << f << std::endl;
}
return 0;
}
std::regex
:#include<iostream>
#include<regex>
#include<vector>
#include<string>
int main() {
std::string line;
std::getline(std::cin, line);
std::regex re("\\s+");
std::sregex_token_iterator it{line.begin(), line.end(), re, -1};
std::vector<std::string> fields{it, {}};
for (const auto& f : fields) {
std::cout << f << std::endl;
}
return 0;
}
这两种方法都可以解析具有不同字段数的行。第一种方法使用std::getline
和std::istringstream
,将输入的行按照空格分隔为字段,并将其存储在std::vector<std::string>
中。第二种方法使用std::regex
,将输入的行按照空格分隔为字段,并将其存储在std::vector<std::string>
中。
在实际应用中,可以根据需要选择适合的方法。
领取专属 10元无门槛券
手把手带您无忧上云