C++中getline()和get()的方法浅析
最原始的方法: 获取输入流最原始的形式就是 getline()方法:
1. 从输入流中读取一个字符。 2. 如果读取数量达到size-1,将该字符存储到name数组,删除输入流中的该字符,跳转到5。 3. 如果该字符是换行符,删除输入流中的该字符,跳转到5。 4. 否则,将该字符存储到name数组,删除输入流中的该字符,跳转到1。 5. 在name中结尾添加空字符,结束。 下面的代码是使用原始方法和 #include <iostream> using namespace std; int main() { const int arrayLength = 20; char name1[arrayLength]; char name2[arrayLength]; cout<<"Enter your name1:n"; cin>>name1; cout<<"Enter your name2:n"; cin.getline(name2,arrayLength); cout<<"name1: "<<name1<<endl; cout<<"name2: "<<name2<<endl; cin.get(); return 0; } 分析:我们在输入流中输入name1 name2 name3,然后 get()方法:
#include <iostream> using namespace std; int main() { const int arrayLength = 40; char name1[arrayLength]; cout<<"Enter your name1:n"; cin.get(name1,arrayLength); cin.get(); cout<<"name1: "<<name1<<endl; cin.get(); return 0; } 运行结果: getline()和get()方法读取空行的问题: 所谓空行,就是输入流中只有换行符,当 #include <iostream> using namespace std; int main() { const int arrayLength = 40; char name1[arrayLength]; char name2[arrayLength]; cout<<"Enter your name1:n"; cin.get(name1,arrayLength); cout<<"Enter your name2:n"; cin.get(name2,arrayLength); cout<<"name1: "<<name1<<endl; cout<<"name2: "<<name2<<endl; cin.get(); cin.get(); return 0; } 比如我们输入this is name1,回车,这时name1中读取的是this is name1,接下来遇到回车就中断了,在接下来name2读取的时候输入流就成为空行了,这就导致后面的 #include <iostream> using namespace std; int main() { const int arrayLength = 40; char name1[arrayLength]; char name2[arrayLength]; cout<<"Enter your name1:n"; cin.get(name1,arrayLength); cout<<"name1: "<<name1<<endl; cout<<"name2: "<<name2<<endl; cin.clear(); cin.get(); cin.get(); return 0; } 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用PHP能有所帮助,如果有疑问大家可以留言交流,谢谢大家对编程小技巧的支持。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |