我在書「Accelerated C++」(第6.1.1章)中找到了下面的代碼,但我無法編譯它。問題在於find_if
行。我有必要的包括(矢量,字符串,算法,cctype)。任何想法?使用find_if分割字符串
感謝,賈巴
bool space(char c) {
return isspace(c);
}
bool not_space(char c) {
return !isspace(c);
}
vector<string> split_v3(const string& str)
{
typedef string::const_iterator iter;
vector<string> ret;
iter i, j;
i = str.begin();
while (i != str.end())
{
// ignore leading blanks
i = find_if(i, str.end(), not_space);
// find end of next word
j = find_if(i, str.end(), space);
// copy the characters in [i, j)
if (i != str.end()) {
ret.push_back(string(i, j));
}
i = j;
}
return ret;
}
如何對這些編譯錯誤? :) – GManNickG 2009-12-16 23:35:02
確實。在包含和'使用命名空間標準;'扔在這裏完美地編譯;請告訴我們你有什麼不同。 – ephemient 2009-12-16 23:42:47
這個例子在這裏編譯。你應該給出一個完整的最小例子。 – anno 2009-12-16 23:46:38