16項 vectorとstringのデータをレガシーAPIに渡す方法を学ぼう

vectorとstringのデータをレガシーAPIに渡す方法を学ぼう



vectorのデータへのポインタを取得するときには、"&v[0]"と記述します。"&*v.begin()"でも同じ意味になりますが読みづらいので、"&v[0]"と記述すべきです。

if(!v.empty()){
    doSomething(&v[0], v.size());
}

空のvectorのデータへのポインタを取得しないように、empty()で空でないことを確かめます。



stringのデータへのポインタを取得するときには、string::c_str()を使います。
c_str()は、stringが持つ文字列へのconstなポインタを返します。文字列が指定されていない時には、'\0'へのポインタが返されます。
c_str()の呼び出し時に、データのコピーを作ってからconstなポインタを返す処理系と、コピーを作らない処理系があります。