字符数组中的cin与cout
2013-09-11 21:02 Keiven_LY 阅读(2187) 评论(0) 编辑 收藏 举报1 #include<iostream> 2 #include<stdlib.h> 3 4 using namespace std; 5 6 int main() 7 { 8 char str[]="Welcome to C++ world !"; //创建一个字符数组,并初始化 9 cout<<str<<endl; //输出字符串 10 cout<<"请输入新的字符串:"<<endl; 11 cin>>str; 12 cout<<str<<endl; 13 14 system("pause"); 15 }
注:代码第3行 using namespace std;为名称空间编译指令
#include <iostream.h>
using namespace std; 则出错
所以 要么写成
#include <iostream >
using namespace std;
要么写成
#include <iostream.h>
疑问:代码第11行,输入的Hello everyone并没有超出为字符串数组str初始化的空间,为什么输出结果只是Hello
原因是:用cin>>进行输入操作时,跳过前导空白,从第一个有效字符起,向对应的字符数组依次存入字符,直到遇到一个空白字符才结识,这便完成了一个字符串的输入
那么,如何将含空格的字符串读到C风格字符串呢????——————使用get()与getline()函数
这两个函数都用于读入一行输入,直到遇到换行符,不同之处在于:getline()丢弃换行符,而get()会同时将换行符读入C风格的字符串中。
如:
#include<iostream> #include<stdlib.h> using namespace std; int main() { char name[16]; char school[50]; cout<<"请输入您的姓名:"<<endl; cin.get(name,16); cin.get(); //从输入流中读出换行符 cout<<"请输入您的学校:"<<endl; cin.getline(school,50); cout<<"您的姓名是:"<<name<<endl; cout<<"您的学校是:"<<school<<endl; system("pause"); }
注:语句"cin.get()"的作用是从输入队列中提取一个字符,即将语句"cin.get(name,16)"遗留在输入队列中的换行符提取出来,否则,若没有语句"cin.get()",在执行语句
"cin.getline(school,50)"时,输入队列中的第一个字符就是一个换行符,,从而,getline()函数会认为已经到达末尾,没有任何可以读取的内容,因此,school将会是只有一个'\0'的空字符串。
从上面的理解,可以看出:
语句:
cin.get(数组名,大小);
cin.get();
与语句:
cin.getline(数组名,大小);
两者是等价的。