繁体   English   中英

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM