让我说我有
std::wstring str(L" abc");
字符串的内容可以是任意的。
如何找到该字符串中不是空格的第一个字符,即在这种情况下是'a'的位置?
答案 0 :(得分:3)
使用[std::basic_string::find_first_not_of][1]
函数
std::wstring::size_type pos = str.find_first_not_of(' ');
pos是3
更新:找到任何其他字符
const wstring delims(L" \t,.;");
std::wstring::size_type pos = str.find_first_not_of(delims);
答案 1 :(得分:3)
这应该这样做(C ++ 03兼容,在C ++ 11中你可以使用lambda):
#include <cwctype>
#include <functional>
typedef int(*Pred)(std::wint_t);
std::string::iterator it =
std::find_if( str.begin(), str.end(), std::not1<Pred>(std::iswspace) );
如果你想要一个索引(或使用str.begin()
),它会返回一个迭代器,从中减去std::distance
。