C++ 按字符读取字符串

来源:互联网 发布:被收购的中国品牌 知乎 编辑:程序博客网 时间:2024/04/30 10:50
#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 0
原创粉丝点击