首页 > 解决方案 > 无法反向操作。表示它无法将 void 转换为字符串但我的结果保存为字符串的错误。已显示代码以供参考

问题描述

string result;
for(int i=st.size()-1;i>=0;i--){
 result+=st.top();
 cout<<st.top()<<endl;
 st.pop();}
 result+='\0';
 return reverse(result.begin(), result.end());

st 是一堆字符。我想以相反的顺序输出堆栈元素

标签: c++c++14cppcheck

解决方案


的返回值std::reverse()void,所以你不能return这样做(除了一个本身返回的函数void)。

std:reverse()修改输入范围内联的内容,因此只是您要求修改其字符return的变量,例如:std::stringstd::reverse()

string result;
while (!st.empty()){
    result += st.top();
    cout << st.top() << endl;
    st.pop();
}
reverse(result.begin(), result.end());
return result; // <-- here

或者,您可以只使用string::insert()而不使用std::reverse(),例如:

string result;
result.reserve(st.size());
while (!st.empty()){
    result.insert(0, st.top());
    cout << st.top() << endl;
    st.pop();
}
return result;

推荐阅读