Я изменяю функцию, которая принимает const char* и использует функцию ProcessString. ProcessString — это функция, которая ожидает символьный буфер с завершающим нулем в виде char*. Символы в буфере могут быть изменены или не изменены, как определено сигнатурой функции ниже. Чтобы «преодолеть разрыв», я использую временный std::string:
void ProcessString( char* str );
void SomeFunction( const char* str )
{
string temp(str);
ProcessString( &temp[0] );
}
Мой основной вопрос касается гарантий std::string::operator[] и того, является ли адрес, возвращаемый приведенным выше &temp[0], пригодным для использования буфером с нулевым завершением в виде char*. Во-вторых, и во-вторых, есть ли лучший способ сделать это?
Я использую С++03.