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
讀取數據(或任何類型的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';
}
'strtok'可以使用。 http://www.cplusplus.com/reference/cstring/strtok/ – thefourtheye
但是,如何將我的字符串轉換爲字符指針? –
'std :: string :: c_str()'將返回空終止的字符串,用於需要以空字符結尾的字符串(如strtok)的C stdlib函數中。請注意,'strtok(...)'***在其*通常*形式中不是線程安全的***,所以下面的建議使用C++ stdlib的答案可能更通用/更健壯。 –