Char *(包含空值)到std::string知道长度
char* (containing null values) to std::string knowing length
我正在做一个项目,我必须传输序列化的数据。数据使用boost框架序列化,然后存储到stringstream中,最后存储到std::string中。为了传输数据,数据(存储为char*,给出!)和字符串的长度都被存储,并且可以在目的地提取。然而,当试图提取数据时,我只得到空字符串。到目前为止,我尝试的方法是:
C[i]=*new std::string(content, getDataChunk(), content.getDataLength());
或
C[i].append(content.getDataChunk(), content.getDataLength());
where std::string *C=new std::string[K], i (这会在开始时引发一个异常-我猜是因为NULL值!?) 显然,strcpy()不会工作,因为它使用char*作为目标,再次以null结束… 你们谁有办法解决这个问题?我希望我问的不是每天都被问到的问题,但是从大量的答案中很难排除这种可能性;) 你的任何提示是非常非常感激- TIA! 欢呼,亚历克斯char* p = content.getDataChunk();
int l = content.getDataLength();
for (int j = 0; j < l; j++) {
C[i].insert(j, p[j], 1);
}
为什么不直接做呢
C[i] = std::string(content.getDataChunk(), content.getDataLength());
它会做正确的事情,复制完整的字符串,即使它已经嵌入了' '
字符。
相关文章:
- cppcheck在const std::string[]上引发警告
- 将std::string传递给WriteConsole API
- 为std::string的某个索引赋值
- std中有类似find_last_of的函数,而string中没有
- 使用 std::string () const 函数启动线程或未来
- 当我们进行一些操作时,应该使用什么'std::string'或'std::stringstream'?
- 如何更改大小(std::string)
- std::string 的对象真的可以移动吗?
- SegFault 同时使用 std::string::operator+= 和函数作为参数
- 无法从 std::string 中提取C++ Unicode 符号
- std::string 构造函数如何处理固定大小的 char[]?
- 确切地说,如何解释 std::getline(stream, string) 函数在C++中填充的字符串
- C++:考虑C++ std::string 中双引号 (") 的字面含义,而不使用反斜杠 (\)
- 'int main(int, int, std::__cxx11::string, std::__cxx11::string)'只需要零或两个参数 [-Wmain]
- C++ 在列表和列表之间选择返回类型<<string>std::p air<string,string>>
- std::string, std::wstring and UTF8
- uan inplace replacement of std::string/std::wstring?
- #define Glib::string std:wstring
- 从 std::string & std::wstring 中获取 char 整数值
- BSTR转换为std::string(std::wstring),反之亦然