C将std :: string复制到char数组,没有空终止

C将std :: string复制到char数组,没有空终止,第1张

概述我正在使用只包含char [32]的结构写入二进制文件.我基本上需要通过对字符串数组执行各种计算并连接结果来格式化每个数据块.我试图将std :: string复制到没有空终止的char数组.我读到的越多,我就越困惑.如果我做: struct block{ char data[32];};block blocks[2048];std::string buffer;buffer = 我正在使用只包含char [32]的结构写入二进制文件.我基本上需要通过对字符串数组执行各种计算并连接结果来格式化每个数据块.我试图将std :: string复制到没有空终止的char数组.我读到的越多,我就越困惑.如果我做:
struct block{    char data[32];};block blocks[2048];std::string buffer;buffer = "12345678123456781234567812345678";strcpy(blocks[0].data,buffer.c_str());

我得到一个错误,因为使用c_str()添加空终止符使字符串长度为33.如果我从字符串中减去一个字符,它可以工作,但后来我有空终结符,我不想要.我可以成功地做到以下几点:

strcpy(blocks[0].data,"12345678123456781234567812345678");

但我想先构造字符串,因为它通常涉及连接各种数组的不同字符串.例如,我可以用std :: string来做到这一点:

std::string buffer = stringArray1[0] + stringArray2[0];strcpy(blocks[0].data,buffer.c_str());

但后来我再次使用null终止符.我只想复制std :: string中的字符而没有空终止符.

我使用的是VC 6.0.

解决方法 使用 memcpy而不是strcpy,这就是它的用途:
memcpy(blocks[0].data,buffer.data(),sizeof(blocks[0].data));
总结

以上是内存溢出为你收集整理的C将std :: string复制到char数组,没有空终止全部内容,希望文章能够帮你解决C将std :: string复制到char数组,没有空终止所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1237257.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存