之前我好像在一个论坛上看到了,过太久了,不太记得了,今天翻出来,觉得挺经典的,就贴出来了。如下:
这是一个比较典型的问题,很多人都会遇到,这也是一个在C++输入时经常遇到的一个问题。
C++代码如下:
#include <iostream>
3.int main()
4.{
5. using namespace std;
6. const int ArSize = 20;
7. char name[ArSize];
8. char dessert[ArSize];
9.
10. cout << "Enter your name:\n";
11. cin >> name;
12. cout << "Enter your favorite dessert:\n";
13. cin >> dessert;
14. cout << "I have some delicious " << dessert;
15. cout << " for you, " << name << ".\n";
16. return 0;
17.}
可以先不看答案想一下这个程序的运行结果。如果你答对了,说明你C++学习的还比较好的。。。。
下面是答案:
看下下面的代码和上面代码的差别:
1.// instr2.cpp -- reading more than one word with getline
2.#include <iostream>
3.int main()
4.{
5. using namespace std;
6. const int ArSize = 20;
7. char name[ArSize];
8. char dessert[ArSize];
9.
10. cout << "Enter your name:\n";
11. cin.getline(name, ArSize); // reads through newline
12. cout << "Enter your favorite dessert:\n";
13. cin.getline(dessert, ArSize);
14. cout << "I have some delicious " << dessert;
15. cout << " for you, " << name << ".\n";
16. return 0;
17.}
看到问题所在了吧,关键就在这个cin上,它是不会自己做长度越界判断,这个和scanf类似,所以你在输入时需要指定输入的长度,以防止越界。