Domanda

Voglio trovare il primo spazio di una linea utilizzando ritrovamento di boost :: string_algo prima:

const boost::iterator_range<std::string::iterator> token_range = boost::find_first(line, " ");

Non riesco a trovare nulla nella documentazione che dice ciò che questo ritorni se esso non trova uno spazio, però. Ho bisogno di testare token_range.end () contro line.end () o qualcosa del genere?

Grazie!

È stato utile?

Soluzione

Credo che si dovrebbe solo token_range.empty() di prova, in questo modo:

const boost::iterator_range<std::string::iterator> token_range = boost::find_first(line, " ");
if (!token_range.empty())
{
    // Found a a match
}

boost::iterator_range ha anche un operatore di conversione bool, così si può anche cadere il vuoto chiamata di funzione (), e basta scrivere:

const boost::iterator_range<std::string::iterator> token_range = boost::find_first(line, " ");
if (token_range)
{
    // Found a a match
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top