在std :: string中查找不是空格的第一个字符

时间:2014-03-26 10:47:34

标签: c++ string stl

让我说我有

std::wstring str(L"   abc");

字符串的内容可以是任意的。

如何找到该字符串中不是空格的第一个字符,即在这种情况下是'a'的位置?

2 个答案:

答案 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