std::strtok
是 C 风格的方式来做到这一点。您可能正在考虑使用std::stringstream
,例如:
#include <sstream>
#include <string>
#include <iostream>
int main() {
std::string input = "foo bar baz quxx\nducks";
std::stringstream ss(input);
std::string word;
while (ss >> word) {
std::cout << word << '\n';
}
}
运行时显示:
foo
bar
baz
quxx
ducks
如果您想从 a std::stringstream
(或任何类型的std::istream
,真的)读取数据到特定的数据类型,您可以遵循@JerryCoffinoperator>>
为您的数据类型重载流的极好建议:
#include <sstream>
#include <string>
#include <iostream>
struct Employee {
std::string name;
std::string title;
int age;
std::string status;
};
std::istream& operator>>(std::istream &is, Employee &e) {
return is >> e.name >> e.title >> e.age >> e.status;
}
int main() {
std::string input = "Bob Accountant 65 retired";
std::stringstream ss(input);
Employee e;
ss >> e;
std::cout << "Name: " << e.name
<< " Title: " << e.title
<< " Age: " << e.age
<< " Status: " << e.status
<< '\n';
}