【发布时间】:2018-03-09 18:01:57
【问题描述】:
输入
“天是蓝的”
预期输出
“蓝色是天空”
我的输出
“蓝色是天空”
我无法指出代码中的错误。
代码如下:
#include <bits/stdc++.h>
using namespace std;
int main() {
string s = "the sky is blue";
reverse(s.begin(),s.end());
stack<char> t;
for(int i = 0;i < s.length();i++){
if(s[i] != ' '){
t.push(s[i]);
}
else{
while(!t.empty()){
cout << t.top();
t.pop();
}
cout << " ";
}
}
return 0;
}
【问题讨论】:
-
reverse不会反转每个单词。如果你调试过你的代码,你应该已经看到了。 -
我知道。反转后我正在使用堆栈打印出元素。
-
这将反转每个单词...
-
Example of std::istringstream。无需检查空格。所以在发布任何答案并得到“我的老师或书没有教我这个,所以我不能使用它”之前,这是可以接受的吗?
-
无关:注意
#include <bits/stdc++.h> using namespace std;组合。它可能导致一些几乎无法理解的错误。更多关于为什么在这里 stackoverflow.com/questions/31816095/… 和这里 stackoverflow.com/questions/1452721/… 。在您的全局命名空间中,您将拥有整个标准库。有很多潜在的地雷需要踩。
标签: c++ string loops stl stack