std::string には、c_str() のようにデータをフェッチするための const メンバーしかありません。ただし、文字列の最初の要素への参照を取得でき、operator[]
それに書き込むことができます。
たとえば、関数がある場合:
void toupper(char *first,char *last_plus_one);
最初の要素へのポインターを取得する vector に直接書き込むことができます。
vector<char> message // has "Some Message";
toupper(&message[0],&message[0]+message.size());
std::string で同じことができますか?
string message="Some Message";
toupper(&message[0],&message[0]+message.size());
標準は、メモリの位置が実際に線形であることを保証していますか? すなわち:
&(*(message.begin()+n)) == &message[n]
ありがとう。