【发布时间】:2017-10-11 16:53:21
【问题描述】:
所以我在网站上四处寻找有类似问题的人,但没有出现任何问题,这真的让我感到困惑。
#include <iostream>
#include <string>
using namespace std;
string reverse(string s)
{
int start = 0;
for(int i = 0; i < s.length(); i++)
{
if(s[i]==' '){
string new_word = s.substr(start,i);
cout << new_word << endl;
start = i+1;
}
}
return "hi";
}
int main(){
cout << reverse("Hey there my name is am");
return 0;
}
当我运行上面的代码时,这就是我得到的输出。
Hey
there my
my name is
name is am
is am
hi
如您所见,if 条件似乎并没有在每个空间都中断。我也尝试过 isspace(s[i]) 并产生与上述相同的结果。我一生都无法弄清楚为什么 if 条件在某些空白处而不是其他空白处被跳过。有没有人遇到过类似的问题?
【问题讨论】:
-
你真的必须努力让你的缩进对齐。保持代码整洁有序非常重要,尤其是在寻求帮助时。
-
现在是使用调试器单步调试代码并发现异常行为的好时机。
-
也许documentation on substr 会有所帮助
-
@Kevin 确实有帮助,我最初误读了它。谢谢!对于那些想知道问题不在于 isspace() 或我的 if 但我在错误的位置剪切子字符串的人。
-
提示:仔细阅读
substr,注意第二个参数应该是什么。