2011-06-22 12 views
0

が、私はこのベクターからchar *を取得するには<char>?

vector<char> vbuffer; 

のようなベクトルを宣言し、このような受信バッファとしてそれを使用している...

recv = read(m_fd, &m_vbuffer[totalRecv], SIZE_OF_BUFFER); 

それは作業のように思えるし、今私は、構文解析のための生の文字データを取得したいです..私はこのような関数を定義した場合

..

char* getData(){ 
//return char data from the vector 

} 

機能の内部をどのように埋めるのですか?事前のおかげで..

+0

あなたはどう思います行う '&m_vbuffer [totalRecv]'しているのですか?最初にベクトルのサイズを変更しましたか? –

+0

第3引数は 'm_vbuffer.size() - totalRecv'である必要があります。現在のオフセットを減算しない場合は、バッファをオーバーランさせることができます。 –

+0

ここに行く - http://stackoverflow.com/q/1339470/57428 – sharptooth

答えて

3

をいずれにしても、配列へのポインタとして&vbuffer[0]を使用できます。しかし、ベクトルへのポインタを無効にする多くの操作がありますが、ポインタを使用している間はそれらを呼び出さないようにしてください。 C言語で

1

これはあなたのベクトルの最初の要素へのポインタを与えるので、あなたは、配列のようにそれを使用することができます:あなたはベクトルのサイズを変更していない限り

&m_vbuffer[0] 
3

++ 0xを、単にm_vbuffer.data()

関連する問題