![](/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.