这是我的代码,如果你输入“Ctrl + Z”它应该完成,但它将进入循环模式并重复写下最后一个单词。
#include <iostream>
using namespace std;
int main()
{ char word[80];
do
{ cin >> word;
if (*word) cout << "\t\"" << word << "\"\n";
} while (*word);
}
通过按“Ctrl + Z”这个简单的程序应该结束,但为什么它不会这样?它有什么问题?
看看这段代码:
{ char line[80];
do
{ cin.getline(line,80);
if (*line) cout << "\t[" << line << "]\n";
} while (*line);
}
它类似于第一个代码,但这次它工作正常,它将通过按“Ctrl + Z”退出循环
那么第一个代码的确切问题是什么?
答案 0 :(得分:2)
它不会退出循环,因为*word
不是空字符; word
仍然指向上一次迭代中读取的缓冲区,当按Ctrl + Z时它会被删除。
你应该把循环写成:
while(cin >> word) { /* your code */ }
然后按Ctrl + Z
后它应该退出循环此外,最好将word
声明为std::string
而不是char[80]
:
std::string word; //#include <string>
while (cin >> word)
{
cout << "\t\"" << word << "\"\n";
}