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なポインタを返す処理系と、コピーを作らない処理系があります。