Dưới đây là một ví dụ đơn giản thực hiện:
#include <string>
#include <vector>
#include <sstream>
#include <utility>
std::vector<std::string> explode(std::string const & s, char delim)
{
std::vector<std::string> result;
std::istringstream iss(s);
for (std::string token; std::getline(iss, token, delim);)
{
result.push_back(std::move(token));
}
return result;
}
Cách sử dụng:
auto v = explode("hello world foo bar", ' ');
Lưu ý: @ ý tưởng của văn bản cho một iterator đầu ra Jerry là thành ngữ hơn cho C++. Trong thực tế, bạn có thể cung cấp cả hai; một mẫu đầu ra-trình lặp và một trình bao bọc tạo ra một vec-tơ, cho sự linh hoạt tối đa.
Lưu ý 2: Nếu bạn muốn bỏ qua thẻ trống, thêm if (!token.empty())
.
Nguồn
2012-10-19 03:36:30
Không, nhưng thật dễ dàng để viết triển khai của riêng bạn. –
'đẩy mạnh :: split' từ [tăng/thuật toán/string.hpp] (www.boost.org/doc/html/string_algo.html) – Praetorian
@KerrekSB Tôi nghĩ bạn nên chắc rằng một câu trả lời trước khi điều này được đóng –