一、字符串输入:
1、面向单词的输入:
cin>>使用空白(空格、制表符和换行符)确定字符串的结束位置。如果一次输入两个单词,中间隔着空格,则只读取第一个单词,并自动在结尾处添加空字符。而另一个单词会留在缓冲中,有可能被后面的输入读到。
2、面向行的输入:
1)getline,通过回车键输入的换行符来确定结尾,然后丢弃换行符,并用空字符取代之。调用:cin.getline()。
有两个参数,第一个参数用来存储字符串的名称,第二个参数是要读取的字符数,注意要把空字符算上。
2)get,类似getline,但是将换行符留在输入队列中。如果要连续读,需要用不带参数的get()方法接收掉换行符。
cin.get(name,ArSize);
cin.get();
cin.get(dessert,ArSize);
注意以上方法均返回一个cin对象,因此可以连续输入。
通常getline使用起来简单一点,get使得检查错误更简单些。
在混合输入字符串和数字时,经常发生输入空行的情况。比如cin输入数字,此时cin不丢弃换行符留在输入队列中,这样就会被下文的getline等读到,从而变成空行。因此通常在输入字符串前要用get检查前面的输入是否留有换行符。
二、循环字符输入
1、cin>>,比如对于哨兵字符:
cin >> ch;
while (ch != '#')
{
cout << ch;
cin >> ch;
}
注意,cin读取字符时忽略空格和换行符,不会赋予ch,故也不会回显。
2、cin.get(ch)读取每个字符,包括空格、制表和换行符。
注意cin.get()和cin.get(char)使用了函数重载,是一个函数的两个版本。前者返回输入中的下一个字符并作为int值返回,后者返回一个istream对象,故可以拼接。而cin.get(name,ArSize)用于接收字符串。
三、文件尾条件
1、用cin.get(char)方法:
while(cin.get(ch))
{..}
2、用cin.get()方法:
int ch;
while ((ch = cin.get()) != EOF)
{
cout.put(char(ch));
}
注意必需用int。EOF通常被定义为-1,但在有些系统中,char类型没有符号,不可能为EOF。另外,在显示时必需强制转化为char类型。
新闻热点
疑难解答