![](/img/trans.png)
[英]C++ turn a std::tuple<char, char, char> into a std::string?
[英]output char* to std::string C++
因此給出:
struct MemoryStruct {
char *memory;
size_t size;
};
char* memory
保存一個curl返回XML文檔。
我在做:
if(chunk.memory) {
std::cout << "char size is " << sizeof(chunk.memory) << std::endl;
std::string s = "";
for (int c = 0; c<sizeof(chunk.memory); c++) {
s.push_back(chunk.memory[c]);
}
std::cout << "s: " << s.c_str() << std::endl;
}
我只回來<?xm
所以sizeof()
我認為是返回char *中的總字節數
我如何獲得實際值是char*
。 因此,基本上整個卷發返回。 XML的5行是哪一行?
sizeof(chunk.memory)
將始終為您提供一個指針大小,在您的情況下,該大小似乎為4。這就是為什么在std :: string中僅看到4個字符的原因。
如果您的curl返回值或其他以\\0
結尾的\\0
,則可以直接執行以下操作
std::string s(chunk.memory);
如果您的char *不是以\\0
結尾,那么您需要知道字符串的長度-您不能為此使用sizeof(chunk.memory)
。 如果您的chunk.size包含正確的大小,則可以使用
std::string s(chunk.memory, chunk.size);
std :: string構造函數可以接受char *和數據長度( 請參閱docs ); 例:
std::string s(chunk.memory, chunk.size);
因此,容器將為您的字符串預分配需要的空間並使用它進行初始化。
在MemoryStruct
memory
是指向第一個返回的字符的指針, size
是返回的字符數。 您想要使用此數據初始化字符串,因此您需要執行以下操作:
s.assign(chunk.memory, chunk.size);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.