std::string c@R_616_10636@C_function(int X) { char buf[MAX_LEN] = {0}; // MAX_LEN is defined by the library size_t len = MAX_LEN; C_function(x,buf,&len); return std::string(buf,len); }
std::string c@R_616_10636@C_function(int X) { std::string buf(MAX_LEN,'\0'); // MAX_LEN is defined by the library size_t len = MAX_LEN; C_function(x,&buf.front(),&len); buf.resize(len); return buf; }
这编译和工作,但我有疑问,因为Std :: String类使得很难得到一个非const指针指向字符数据. c_str()和data()都返回const指针.该标准明确@L_944_8@对这些函数修改缓冲区:
从文档中看,这似乎是合法的,因为front()返回对缓冲区的第一个字符的引用,该字符必须是连续的(我使用的是C 11/14).在21.4.5中,front()的语义是根据operator [](0)定义的,它不@L_944_8@修改.
从语言标准的角度来看,这种方法有什么问题吗?似乎这将是一个循环漏洞,允许在21.4.7.1中明确@L_944_8@修改.
以上是大佬教程为你收集整理的c – 使用&front()修改std :: string中的基础字符数组全部内容,希望文章能够帮你解决c – 使用&front()修改std :: string中的基础字符数组所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。