常见的C++字符&字符串输入输出

一、每次输入一个字符
1.使用原始的cin进行输入:
char ch;
cin >> ch;
特点: cin在读取char值时,与其他基本类型一样,cin将忽略空格和换行符,因此输入的空格不会被回显,也不会被包括在计数内。发送个cin的输入被缓冲,只有按下回车键后,输入才会被发给程序。
2.使用cin.get(char):
因为C++的函数重载。所以cin.get()有三个版本。
*char ch;
cin.get(char); //只接受一个char参数
*char name[Size];
cin.get(name, Size); //一次性可以输入一个字符数组
*cin.get(); //没有任何参数
ch = cin.get(); //没有任何参数
3.文件尾(EOF)操作条件
在很多PC编程环境中,常常都将Ctrl+Z视为模拟的EOF。
在检测到EOF后,则cin将两位(eofbit和failbit)都将设置为1,可以通过成员函数eof()来查看eofbit是否被设置;如果被设置cin.eof将返回true,否则返回false。如果EOF被设置,则fail()返回true,否则返回false。两个函数都是事后报道,因此应将cin.eof()/cin.fail()放在读取后面。
eg:
char ch;
cin.get(ch);
//while(cin.fail() == false)
while(cin.eof() == false)
{

}
cin.get(ch) 与 cin.get()
cin.get(ch): 赋给参数ch;函数的返回值为istream对象(执行bool转换后为true);达到EOF时函数的返回值为istream对象(执行bool后转换为false)。
ch = cin.get(): 将函数返回值赋给ch;函数的返回值为int类型的字符编码;达到EOF时函数返回EOF。

    char ch;
    int count = 0;
    cin.get(ch);
    //while(cin.fail() == false)    //在新的一行开头输入 ctrl + z来模拟 
    //while(!cin.fail())
    //while(cin)    //istream类对象提供一个可以将istream对象转换为bool值的函数;当需要bool值时,该函数被调用
    //while(cin.get(ch))    //cin.get(char)返回值为cin 
    //while(cin.eof() == false) 
    while(!cin.eof())
    {
        cin>>ch;
        ++count;
        //cin.get(ch);
    }
    cout<< endl << count << " characters read\n";*/

二、每次输出一个字符
1、put()方法:
cout.put(‘w’); 该函数返回值也是一个只想到用对象的引用,因此可以用它将拼接输出:
cout.put(‘w’).put(‘w’);
2、write()方法:
返回类型为ostream&。
char name[20];
cout.write(name, 20);
3、刷新缓冲区:
cout<< “hello world!” << flush;

    控制符flush刷新缓冲区,而控制符endl刷新缓冲区,并插一个换行符。
    也可以这样调用:flush(cout);     cout<<flush;

三、字符串输入
1、getline():
原型:
istream & getline(char *, int , char);
istream & getline(char *, int);
第一个参数为放置输入字符串的内存单元地址,第二个参数要比读取的最大字符数大1(用作结尾符)。第三个参数指定用作分界符的字符。
char name[23];
cin.getline(name, 23);
getline()与get()最大区别是:get()将换行符留在输入流中,这样接下来的输入操作将是换行符,而GetLine()抽取并丢弃输入流中换行符。
2、get():
原型:
istream & get(char *, int , char);
istream & get(char *, int);
get()参数含义与getline()相同。

下面的代码可以作为测试:

    cout<< "字符串输入" <<endl;
    cout<< "面向行的输入:getline()" <<endl;
    char name[20];
    int year;
    cin>>year;
    cin.get();   //抽取换行符
    cout<< "Enter your name: ";
    cin.getline(name, 20);      //抽取并丢弃换行符
    cout<< "year: " << year  <<endl;
    cout<< "Your name: " << name <<endl;

    cout<< "面向行的输入:get()" <<endl;
    cout<< "Enter your name: ";
    cin.get(name, 20);   //没有丢弃换行符
    cin.get();    //抽取换行符
    //cin.get(name, 20).get();  //同上面两行作用相同
    cout<< "Your name: " << name <<endl;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值