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
std::stringstream
a (または実際には任意の型) から特定のデータ型にデータを読み取りたい場合はstd::istream
、データ型のストリームをオーバーロードするという @JerryCoffin の優れた提案に従うことができますoperator>>
。
#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';
}