gpt4 book ai didi

c++ - String::push_back() 不推回

转载 作者:行者123 更新时间:2023-11-28 08:08:12 29 4
gpt4 key购买 nike

我目前正在编写中缀到后缀转换器。它工作得很好,除了我在将 Stack 的其余部分添加到后缀时遇到问题。堆栈是一个

vector<char>

后缀是一个字符串。阅读完所有内容后,我尝试以下操作:

while (!stack.empty()) {
postfix.push_back(stack.back());
stack.pop_back();
}

但是没有附加任何内容。我什至在 Debug模式下尝试过它,看起来不错,但没有附加任何内容。

std::cout << postfix.c_str();

从堆栈中删除最后一个运算符。我什至试图临时保存它,但它没有被推送。

由于限制,我无法将所有四个文件都发布到 pastebin 中。我使用 Visual Studio 2010 Ultimate 并且没有错误,只是没有附加字符。

最佳答案

您打印该字符串的方式不必要地复杂 - 并且可能是错误的。如果你更换

std::cout << postfix.c_str();

std::cout << postfix;

然后您将看到字符串中的真实内容,即使它包含嵌入的空字符

由于您使用“\0”作为错误指示符但未对其进行检查,因此您很可能嵌入了空值。通过使用 c_str(),您明确要求在第一个 null 处截断字符串。

关于c++ - String::push_back() 不推回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9788472/

29 4 0