String::push_back() does not push back

String::push_back() does not push back

本文关键字:push back does not String      更新时间:2023-10-16

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

vector<char>

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

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

但没有附加任何内容。我甚至在调试模式下尝试过它,它看起来很好,但没有附加任何内容。

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

省略堆栈中的最后一个运算符。我甚至试图暂时保存它,但它不会被推。

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

打印字符串的方式不必要地复杂,而且可能是错误的。如果更换

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

带有

std::cout << postfix;

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

由于您使用"\0"作为错误指示器,但没有检查它,因此可能嵌入了null。通过使用c_str(),您明确要求在第一个null处截断字符串。