最近GCC4.4(MinGW TDMビルド)にアップグレードしましたが、次のコードで次の警告が表示されます。
メンバー関数で'voidConsole :: print(const std :: string&)':
警告:配列の添え字が配列の境界を超えています
コードは次のとおりです。
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 );
}
}
何か案は?
それを行っているのは最適化です...
また、それを引き起こしているのはこの行のようです:
boost::split( tokens, newLine, boost::is_any_of("\n") );
はい、わかりました。boost:: is_any_of()の引数です。string()コンストラクターでラップすると、警告が消えます。ご協力いただきありがとうございます:)
boost::split( tokens, newLine, boost::is_any_of( string( "\n" ) ) );