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数组,没有空终止所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)