2014-02-11 112 views
0

另一個C++問題。存儲字符數組

我使用庫來接收來自web服務的數據。每次我收到一個名爲OnData的方法時,都會調用它。

void OnData(const Response* r, void* userdata, 
    const unsigned char* data, int n) { //code here } 

const const unsigned char * data是什麼包含我想要的數據。但是OnData被多次調用。所以我想我會使用一個字符串,並將其附加到該數據。我沒有編譯錯誤,所以我期待它的工作。但是當我收到錯誤時,我做了一個結果的輸出,我注意到我只有15%的預期數據。

之後,我一直在尋找一段時間在互聯網上尋找一種方式,我可以安全地在某種數組中的所有數據。

額外的東西,我需要有一個字符指針發送到我的XML解析器。所以如果有一種方法,我可以將所有的數據都存儲在一個不錯的字符指針中,這將有助於提高性能。

+0

你可以使用像Array 這樣的通用數組類。我認爲你可以使用諸如boost庫或stl(標準模板庫)之類的東西,它可能會作爲C++腳本附帶在你的編譯器中。 – Sirac

+0

也許這些數據包含嵌入的空字符?這會停止你用來停止的std :: string類型的緩衝區。換句話說:你使用了什麼類型的字符串,以及如何填充它? –

+0

「我沒有編譯錯誤,所以我期待它的工作。」你在伊德里斯花了太多的時間編程。 – molbdnilo

回答

1

用類似std:string Mydata(data);這樣的東西製作一個副本可能是最好的方法。你可以將它們存儲在std::vector<std:string>

編輯:

因爲數據可能不是零終止:

static std::vector<std:string> MyData; 

MyData.emplace_back(data,n); 

或者,如果你想將所有數據存儲在一個字符串:

static std::string MyData; 
MyData.append(data,n); 
+2

如果數據包含嵌入的空字符,則不會執行 - 更好地使用帶指針和大小的字符串構造函數。 –

+0

append(data,n)解決了它。 – Tristan