方法一:getline()
读入整行数据,使用回车键输入的换行符来确定输入结尾。
调用方法:
cingetline(str,
len)
第一个参数str用来存储输入行的数组名称,第二个参数是要读取的字符数。
方法二:
cinget(str,
len)
两者都是读取一行输入,直至换行符。
然后,getline将换行符丢弃,而get()将换行符保留在输入序列里
对于string类:
方法:getline(cin,
str)
cin>>通常只能读取一个单词。cinget()可以读取固定长度的字符串,含空格等符号。
一、使用cin函数
由于cin通过空格、制表符、换行符来界定字符串的。故cin在获取字符时只读取一个单词长度,对于有空格的字符串其空格后面字符读不了。
例如:读取姓名
#include <iostream>
using namespace std;
int main()
{
const int size=20;
char name[size];
char add[size];
cout<<"enter name:"<<endl;
cin>>name;
cout<<"enter address:"<<endl;
cin>>add;
cout<<"your name is "<<name<<" and your address is "<<add<<endl;
return 0;
}
运行结果:
enter name:
HSING HSU
enter address:
your name is HSING and your address is HSU
该运行结果不是用户所需的结果。故需要用下面的表示方法。
二、使用cinget()函数
(1)cinget()函数与cingetline()函数类似。但cinget(name,size);读取到行尾后丢弃换行符,因此读取一次后换行符任留在输入队列中。
例:
#include <iostream>
using namespace std;
int main()
{
const int size=20;
char name[size];
char add[size];
cout<<"enter name:"<<endl;
cinget(name,size);
cout<<"enter address:"<<endl;
cinget(add,size);
cout<<"your name is "<<name<<" and your address is "<<add<<endl;
return 0;
}
运行结果:
enter name:
HSING HSU
enter address:
your name is HSING HSU and your address is
运行结果不是用户所需要的结果。
注:第二次直接读取的是换行符
(2)
cinget()修改:在cinget(name,size);后面加一条语句:
cinget();该函数可以读取一个字符。将换行符读入。
#include <iostream>
using namespace std;
int main()
{
const int size=20;
char name[size];
char add[size];
cout<<"enter name:"<<endl;
cinget(name,size);
cinget();
cout<<"enter address:"<<endl;
cinget(add,size);
cout<<"your name is "<<name<<" and your address is "<<add<<endl;
return 0;
}
运行结果:
enter name:
HSING HSU
enter address:
WU HAN
your name is HSING HSU and your address is WU HAN
运行正确。
(3)也可以将两个成员函数拼接起来cinget(name,size)get()
使用get()接受后面留下的换行符。
#include <iostream>
using namespace std;
int main()
{
const int size=20;
char name[size];
char add[size];
cout<<"enter name"<<endl;
cinget(name,size)get();
cout<<"enter address:"<<endl;
cinget(add,size);
cout<<"your name is "<<name<<" and your address is "<<add<<endl;
return 0;
}
运行结果:
enter name:
HSING HSU
enter address:
WU HAN
your name is HSING HSU and your address is WU HAN
运行正确。
cinget()
用法1: cinget(字符变量名)可以用来接收字符
#include <iostream>
using namespace std;
main ()
{
char ch;
ch=cinget(); //或者cinget(ch);
cout<<ch<<endl;
}
输入:jljkljkl
输出:j
用法2:cinget(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格
#include <iostream>
using namespace std;
main ()
{
char a[20];
cinget(a,20);
cout<<a<<endl;
}
输入:jkl jkl jkl
输出:jkl jkl jkl
输入:abcdeabcdeabcdeabcdeabcde (输入25个字符)
输出:abcdeabcdeabcdeabcd (接收19个字符+1个'\0')
用法3:cinget(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cinget(字符数组名,接收字符数目)的不足
cinpeek() 其返回值是一个char型的字符,其返回值是指针指向的当前字符,但它只是观测,指针仍停留在当前位置,并不后移。如果要访问的字符是文件结束符,则函数值是EOF(-1)。
其功能是从输入流中读取一个字符 但该字符并未从输入流中删除
若把输入流比作一个 栈类 那么这里的peek函数就相当于栈的成员函数front 而如果cinget()则相当于栈的成员函数pop。
下面这段代码能帮助您更清晰地理解peek函数
/ istream peek
#include <iostream>
using namespace std;
int main () {
char c;
int n;
char str[256];
cout << "Enter a number or a word: ";
c=cinpeek();
if ( (c >= '0') && (c <= '9') )
{
cin >> n;
cout << "You have entered number " << n << endl;
}
else
{
cin >> str;
cout << " You have entered word " << str << endl;
}
return 0;
}
以上就是关于怎样用cin>>读入带空格的字符串到字符数组中去全部的内容,包括:怎样用cin>>读入带空格的字符串到字符数组中去、c++中cin,cin.get()的区别、C++语言中,cin.get()与cin.peek()是什么功能啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)