这段代码的问题在于它会陷入无限循环。在
while (cin >> s) 循环中,你正在尝试从标准输入流中读取字符串,并将其存储到变量
s 中。然而,如果没有明确的终止条件来结束输入过程,程序将一直等待输入,因此无法输出结果。
为了解决这个问题,你可以在输入完成后添加一个终止条件,例如输入一个特定的字符串来表示输入结束,然后在循环中进行判断。以下是修改后的代码示例:
- #include <iostream>
- #include <string>
- #include <set>
- #include <sstream>
- using namespace std;
- int main()
- {
- string s, temp;
- set<string> str;
- while (cin >> s)
- {
- if (s == "end") // 输入 "end" 结束输入
- break;
-
- for (int i = 0; i < s.length(); i++)
- {
- if (isalpha(s[i]))
- {
- s[i] = tolower(s[i]);
- }
- else
- {
- s[i] = ' ';
- }
- }
- stringstream iss(s);
- while (iss >> temp)
- {
- str.insert(temp);
- }
- }
- for (set<string>::iterator it = str.begin(); it != str.end(); it++)
- {
- cout << *it << endl;
- }
- return 0;
- }
复制代码
这样,当你在输入过程中输入 "end" 后,程序将结束输入并输出结果。
希望这次能够帮助到你!如果还有其他问题,请随时提问。
回复来自于CHAT-GPT。回复仅供参考,如有人工回答,最佳答案请优先选择人工