![](/img/trans.png)
[英]Difference between vector::push_back and string::push_back?
[英]String::push_back() does not push back
我目前正在为后缀转换器编写一个中缀。 它工作得很好,除了我在将其余堆栈添加到postfix时遇到问题。 堆栈是一个
vector<char>
后缀是一个字符串。 阅读完所有内容后,请尝试以下操作:
while (!stack.empty()) {
postfix.push_back(stack.back());
stack.pop_back();
}
但是没有附加任何内容。 我什至在Debug-mode下尝试了它,看起来还不错,但是没有附加任何内容。
std::cout << postfix.c_str();
从堆栈中省略最后一个运算符。 我什至尝试将其临时保存,但没有被推送。
由于限制,我无法将所有四个文件发布到pastebin中。 我使用的是Visual Studio 2010 Ultimate,没有任何错误,只是没有附加任何字符。
打印该字符串的方式不必要地很复杂-可能是错误的。 如果您更换
std::cout << postfix.c_str();
与
std::cout << postfix;
然后,您将看到字符串中真正的内容, 即使它包含嵌入的null字符 。
由于您将'\\ 0'用作错误指示符,但未对其进行检查,因此您很可能嵌入了null。 通过使用c_str(),您明确要求在第一个null处截断该字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.