C++ 按字符读取字符串

#include <iostream>
#include <cstdio>
using namespace std;
int main(int argc, const char * argv[])
{

    // insert code here...
    // std::cout << "Hello, World!\n";
    char ch; cout<<"Enter characters; enter # to quit:\n";
    /*
     版本一:
     程序无法打印空格
     如输入:hello world I I # nm
       输出:helloworldII
     因为cin读取char值时,cin将忽略空格和换行符
    */

    
    /*版本二:
        使用cin.get(ch)可解决空格问题(cin.get(ch)返回值为一个对象,不是读取的字符)
        cin.get(ch)  读取输入中的下一个字符(即使他是空格),并将输入复制给变量ch
    */
    cin.get(ch);
    while (ch!='#') {
        cout<<ch;
        cin.get(ch);
    }
    /*
     版本三:
     为了加强可移植性,使用EOF作为结束
     在C++中cin提供eofbit 和 failbit 两种标志,在检测到EOF时eofbit和failbit都设为1
     可以通过成员函数eof 和fail 来检测是否被设置
     如果设置EOF 那么cin.eof() 返回bool值TRUE 否则返回FALSE,
     如果eofbit 和 failbit被设置为1,则cin.fail()返回TRUE,否则返回FALSE
    */
    cin.get(ch);
    while (cin.fail()==false/*检测EOF结束标志,输入EOF cin.fail()返回TRUE*/) {//while(!cin.fail())
        cout<<ch;
        cin.get(ch);
    }
    //版本四:
    /*
     对于无参数的ch=cin.get(),返回值为输入中的下一个字符,与C语言中的getchar()相似
     同样可以使用cout.put(ch),来输出
    */
    int chr;  //声明为int  ,判断EOF时返回值为-1,char类型无-1
    while ((chr=cin.get())!= EOF) {//注意chr=cin.get()的括号
        cout.put(char(chr));
    }
    return 0;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值