2011-06-22 22 views
0

我宣佈這樣如何從矢量<char>獲取char *?

vector<char> vbuffer; 

載體,並用它作爲這樣一個接收緩衝區..

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

這似乎是工作,現在我想要得到解析原始char數據..

如果我定義一個函數這樣的..

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

} 

我會如何填寫功能?在此先感謝..

+0

你覺得呢'&m_vbuffer [totalRecv]'是幹什麼的?你是否先調整了矢量大小? –

+0

第三個參數需要是'm_vbuffer.size() - totalRecv'。如果您不減去當前偏移量,則可以溢出緩衝區。 –

+0

Here you go - http://stackoverflow.com/q/1339470/57428 – sharptooth

回答

3

只要你不調整的矢量無論如何,您可以使用&vbuffer[0]作爲指向數組的指針。有很多操作會使指向vector的指針無效,但確保在指針正在使用時不會調用其中的任何一個。

1

這會給你一個指針向量中的第一個元素,所以你可以使用它像一個數組:

&m_vbuffer[0] 
3

C++ 0x中,根本就m_vbuffer.data()