如何解决如何修复错误:在使用字符串和堆栈时不匹配 'operator<<'操作数类型为 'std::ostream {aka std::basic_ostream<char>}' 和 'void'
我是学习数据结构和算法的初学者。 我正在尝试这个:
#include<iostream>
#include<ostream>
#include<stack>
#include<string>
using namespace std;
int main (){
string original ;
string a = "";
std::stack<string> library;
cin >> original;
for(int i=1; i < original.size() -1; i++){
char b = original[i];
if(!((b == '/' ) || (b == '\\' ))){
a = a + b;
}
else{
library.push(a);
a = "";
};
};
for(int j=0; j < library.size(); j++){
cout << library.pop() ;
}
return 0;
}
prog.cpp:26:14: error: no match for ‘operator<<’ (operand types are ‘std::ostream {aka std::basic_ostream<char>}’ and ‘void’)
cout << library.pop() ;
我已经多次使用 cout <<
,但从未遇到过这个错误。
解决方法
与您的直觉相反,std::stack::pop()
不返回任何内容 (void
)。无法打印 https://en.cppreference.com/w/cpp/container/stack/pop 和 void
。
你可能想要这个:
for(int j=0; j < library.size(); j++){
cout << library.top() ;
library.pop();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。