gpt4 book ai didi

c++ - 需要帮助调试我的反转字符串中单词的代码

转载 作者:太空宇宙 更新时间:2023-11-04 15:33:40 27 4
gpt4 key购买 nike

我需要一些帮助来调试我的代码。这段代码的目的是反转一个字符串中的单词,该字符串是一个句子的形式[假设该字符串没有“.”。在最后]。出于某种原因,我得到的输出是缩进输出加上第一个单词后的额外空格以及缩进输出减去第一个单词。我是编码初学者;因此,如果可能的话,我会喜欢更简单易懂的解决方案,或者使用循环、字符串和数组的解决方案。

示例输入:

My name is Edward

预期输出:

Edward is name My

收到的输出:

Edward  is name 

到目前为止,这是我的代码:

#include <iostream>
#include <string>
#include <stdio.h>

using namespace std;

int main() {

string s, n, a;
getline(cin, s);

for (int i = s.length(); i >= 0; i--){
if (s[i] != 32 ) {
n += s[i];
}
else {
for (int j = n.length() -1; j >= 0; j--){
a += n[j];
}
cout << a << ' ';
n.clear();
a.clear();
}
}

cin.ignore();
getchar();
return 0;

}

另外,我刚刚注意到最后还有一个额外的空间。如果有办法取消输出最后一个空格;请告诉我。

感谢阅读,感谢您的帮助。

最佳答案

正如我在评论中提到的,您正在按字符反转整个字符串,但您需要拆分单词并反转:

#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {

string s, n;
getline(cin, s);
std::istringstream iss(s);
std::vector<string> words;
while(iss >> n) {
words.push_back(n);
}

std::reverse(words.begin(),words.end());

for(auto word : words) {
std::cout << word << ' ';
}

getchar();
return 0;

}

Live Demo

关于c++ - 需要帮助调试我的反转字符串中单词的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41335845/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com