C++ primer plus上的一个有关问题
C++ primer plus上的一个问题
#include <iostream>
#include <string>
int main()
{
using namespace std;
string name;
string dessert;
cout << "Enter your name:\n";
getline(cin, name); // reads through newline
cout << "Enter your favorite dessert:\n";
getline(cin, dessert);
cout << "I have some delicious " << dessert;
cout << " for you, " << name << ".\n";
return 0;
}
这是第四章的一道习题,不知道为什么第一个输入总要敲两次回车,书上有个类似的例子程序也需要敲两个回车,而且执行出来的结果跟书上给的结果不一样…………求大神指点迷津!
------解决方案--------------------
g++ 4.1.2下运行结果,每次输入结束只需输入一次回车
------解决方案--------------------
这个的确是VC6.0编译器的问题,vc6.0对C++标准支持不好,建议使用VS2008/2010,或g++,
这个问题在VS2008中也是不存在的。在VC6.0中测试结果如下:
可见,第二个输入shit没有显示,是因为输入fuck后,输入两次回车才把输入送到缓冲区,这时输入缓冲区fuck结尾有两个换行符,getline(cin, name);获取一个结束,getline(cin, dessert);直接获取第二个换行符返回,所以输出结果里没有shit,这个bug是VC6.0的问题,解决方法可以参考:http://www.cnblogs.com/EnCaL/archive/2012/12/03/2800138.html
#include <iostream>
#include <string>
int main()
{
using namespace std;
string name;
string dessert;
cout << "Enter your name:\n";
getline(cin, name); // reads through newline
cout << "Enter your favorite dessert:\n";
getline(cin, dessert);
cout << "I have some delicious " << dessert;
cout << " for you, " << name << ".\n";
return 0;
}
这是第四章的一道习题,不知道为什么第一个输入总要敲两次回车,书上有个类似的例子程序也需要敲两个回车,而且执行出来的结果跟书上给的结果不一样…………求大神指点迷津!
C++
String
类
------解决方案--------------------
g++ 4.1.2下运行结果,每次输入结束只需输入一次回车
------解决方案--------------------
这个的确是VC6.0编译器的问题,vc6.0对C++标准支持不好,建议使用VS2008/2010,或g++,
这个问题在VS2008中也是不存在的。在VC6.0中测试结果如下:
Enter your name:
fuck
Enter your favorite dessert:
shit
I have some delicious for you, fuck.
可见,第二个输入shit没有显示,是因为输入fuck后,输入两次回车才把输入送到缓冲区,这时输入缓冲区fuck结尾有两个换行符,getline(cin, name);获取一个结束,getline(cin, dessert);直接获取第二个换行符返回,所以输出结果里没有shit,这个bug是VC6.0的问题,解决方法可以参考:http://www.cnblogs.com/EnCaL/archive/2012/12/03/2800138.html