Я изменяю функцию, которая принимает 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 *. Во-вторых, и очень во-вторых, есть ли лучший способ сделать это?
Я использую C ++ 03.