C++ 输入方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hunterlew/article/details/54861108

一、字符串输入:char info[100]或string stuff

1、面向单词的输入:

cin>>使用空白(空格、制表符和换行符)确定字符串的结束位置。如果一次输入两个单词,中间隔着空格,则只读取第一个单词,并自动在结尾处添加空字符。而另一个单词会留在缓冲中,有可能被后面的输入读到。

2、面向行的输入:

1)getline,通过回车键输入的换行符来确定结尾,然后丢弃换行符,并用空字符取代之。调用:cin.getline()。

有两个参数,第一个参数用来存储字符串的名称,第二个参数是要读取的字符数,注意要把空字符算上,如cin.getline(info,100);

注意有个string版本的getline函数:getline(cin,stuff)将自动调整目标string对象大小,使之刚好能存储输入的字符,而不需要指定读取多少个字符的数值参数。

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))

{..}

只要存在有效输入,返回值都是cin,此时判定结果都为true。

2、用cin.get()方法:

int ch;

while ((ch = cin.get()) != EOF)

cout.put(char(ch));

}

注意必需用int。EOF通常被定义为-1,但在有些系统中,char类型没有符号,不可能为EOF。即值EOF可能无法使用char类型来表示。另外,在显示时必需强制转化为char类型。



猜你喜欢

转载自blog.csdn.net/hunterlew/article/details/54861108