String::push_back() does not push back
String::push_back() does not push back
我目前正在编写一个中缀到后缀的转换器。它运行得很好,只是我在将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处截断字符串。
相关文章:
- 推导 std::vector::back() 的返回类型
- vector.back() 和 vector[vector.size() - 1] 之间的区别?
- vector.push_back(vector.back()+1) 是未定义的行为吗?
- C++自己的对象堆栈.在 push() 上复制了什么?
- C++ push() 和 pop() 方法使用指针的动态 LinkedList 的问题
- 如何像在javascript中一样"push" c ++映射
- 线路抑制状态错误 C4703 可能未初始化的局部指针变量"back"已使用
- std::vector using back(), pop_back(), push_back(), 得到'double free or corruption'错误
- vector.back()和vector.end()有什么区别
- 列表大小为 1,但 front() 和 back() 不相等
- 返回C++中没有 back() 方法的容器的最后一个元素?
- 在非空 std::list 上使用 std::list.back<int>() 时"Segmentation Fault"
- 模板堆栈类的复制构造函数中的 pop() 和 push() 不起作用
- 我们可以使用Back() - 值索引在其上执行向量插入
- 当我运行以下代码添加str.front() str.back时,它给了我200个,但为什么
- push(ing)back在循环中对象指针
- 在 C++ 中将元素添加到空向量:为什么 push.back 有效而 [] 无效
- 我似乎无法让 v.push.back() 处理字符串
- String::push_back() does not push back
- 向量resize(), push.back(), reserve()方法