Ostrzeżenie C ++ GCC4.4: indeks tablicy jest powyżej granic tablicy
Niedawno zaktualizowałem do GCC 4.4 (MinGW TDM build) i teraz następujący kod generuje następujące ostrzeżenia:
W funkcji członka 'void Console :: print (const std :: string &)':
ostrzeżenie: indeks tablicy jest powyżej granic tablicy
Oto kod:
void Console::print( const std::string& str ) {
std::string newLine( str );
if( newLine.size() > MAX_LINE_LENGTH ) {
sf::Uint32 stringSize = newLine.size();
for( sf::Uint32 insertPos = MAX_LINE_LENGTH;
insertPos < stringSize; insertPos += MAX_LINE_LENGTH ) {
newLine.insert( insertPos, "\n" );
}
}
StringList tokens;
boost::split( tokens, newLine, boost::is_any_of("\n") );
for( StringList::iterator it = tokens.begin();
it != tokens.end(); ++it ) {
addLine( *it );
}
}
Jakieś pomysły?
Robią to optymalizacje ...
Wydaje się, że to właśnie ta linia powoduje:
boost::split( tokens, newLine, boost::is_any_of("\n") );
Ach tak, znalazłem to, jest argumentem dla boost :: is_any_of (), zawijając go w konstruktorze string () ostrzeżenie zniknie, dziękuję wszystkim za pomoc :)
boost::split( tokens, newLine, boost::is_any_of( string( "\n" ) ) );