Bạn không cần sử dụng cụm từ thông dụng nếu bạn chỉ muốn tách một chuỗi theo nhiều khoảng trắng. Viết thư viện regex của riêng bạn là quá mức cần thiết cho một cái gì đó đơn giản.
Câu trả lời bạn đã liên kết trong nhận xét, Split a string in C++?, có thể dễ dàng thay đổi để không bao gồm bất kỳ phần tử trống nào nếu có nhiều khoảng trắng.
std::vector<std::string> &split(const std::string &s, char delim,std::vector<std::string> &elems) {
std::stringstream ss(s);
std::string item;
while (std::getline(ss, item, delim)) {
if (item.length() > 0) {
elems.push_back(item);
}
}
return elems;
}
std::vector<std::string> split(const std::string &s, char delim) {
std::vector<std::string> elems;
split(s, delim, elems);
return elems;
}
Bằng cách kiểm tra item.length() > 0
trước khi đẩy item
sang elems
vector bạn sẽ không còn nhận được các yếu tố thêm nếu đầu vào của bạn chứa nhiều delimiters (khoảng trống trong trường hợp của bạn)
bạn đã thử '+' – Anirudha
Phải biết tôi đang sử dụng dấu phẩy này các ion để tách chuỗi: http://stackoverflow.com/a/236803/418518 nó chỉ hoạt động bằng __single char__. Định dạng regex là chính xác, tôi đã sử dụng nó trong một dự án java. Hoạt động rực rỡ. –
Vấn đề là tôi không biết C++ nhiều ... và tôi chỉ muốn biết cách tách 'std :: string' bằng cách sử dụng chuẩn C++ cũ (' C++ 03' có lẽ). Nếu bạn có một số liên kết/mã chỉ cần dán nó. :) Cảm ơn! –