【发布时间】:2011-06-04 19:30:19
【问题描述】:
很遗憾,我无法弄清楚关于 c++ 的这些基本知识,但 c 风格的字符串的行为与我意料之外的一样。例如,我这样创建它:
char* cstr = new char[1];
初始化为:Íýýýý««««««««îţ。像往常一样,我可以只设置第一个字符,因为其他字符并不真正存在(或者我认为它们不存在)。在使用 c 风格的字符串时,所有这些垃圾都被处理了,一切正常。
现在我将 std::string 与那些 c-stlye 混合在一起,我得到的是一团糟。用这段代码:
std::string str = "aaa";
str += cstr;
我最终得到了:aaaÍýýýý«««««««««îţ ,但现在这些字符实际上存在,因为 string.size() 返回包含此垃圾的长度。
我不知道为什么会发生这种情况,但它必须连接到创建字符串,因为像 char* cstr = "aaa" 这样的东西会导致 aaa 没有任何额外的垃圾,但是尝试更改以这种方式初始化的字符串会导致内存访问冲突。有人可以解释一下这种行为吗?谢谢!
PS:我的 JavaScript 加载失败,如果有人能正确格式化这篇文章,我会很高兴!
回答:天哪!我怎么能忘记这一点...感谢所有人,嗯,立即回答。最好的是来自 minitech,所以我会在我的 java 脚本加载后立即将其标记为答案:/
【问题讨论】: