См. std::string::find_first_not_of
.
Чтобы найти позицию (индекс) первого непробельного символа:
str.find_first_not_of(' ');
Чтобы найти позицию (индекс) первого непустого символа:
str.find_first_not_of(" \t\r\n");
Возвращает str.npos
, если str
пусто или полностью состоит из пробелов.
Вы можете использовать find_first_not_of
, чтобы обрезать начальные пробелы:
str.erase(0, str.find_first_not_of(" \t\r\n"));
Если вы не хотите жестко кодировать, какие символы считаются пробелами (например, использовать локаль ), вы все равно можете использовать isspace
и find_if
более или менее способом, первоначально предложенным sbi , но стараясь отрицать isspace
, например:
string::iterator it_first_nonspace = find_if(str.begin(), str.end(), not1(isspace));
// e.g. number of blank characters to skip
size_t chars_to_skip = it_first_nonspace - str.begin();
// e.g. trim leading blanks
str.erase(str.begin(), it_first_nonspace);