1. 云栖社区>
  2. PHP教程>
  3. 正文

CPP入门(3):输入、输出

作者:用户 来源:互联网 时间:2017-12-01 20:57:18

输入输出

CPP入门(3):输入、输出 - 摘要: 本文讲的是CPP入门(3):输入、输出, CPP入门(3):输入、输出获得字符串输入[code]int length;std::string name,name1,name2;std::cout << "Enter your name: ";std::cin >

CPP入门(3):输入、输出

获得字符串输入

[code]int length;std::string name,name1,name2;std::cout << "Enter your name: ";std::cin >> name;//cin使用空白字符作为输入字符串的结束标志length = name.size();    //返回某给定字符串里的字符个数 ,一个中文字或者中文标点符号占2个字节std::cout << name << "/t" << length << std::endl;std::cin >> name1 >> name2;      //一次读取多个字符值std::cout << name1 << "/t" << name2 << std::endl;


cin对象在读入一个字符时将忽略空格,如果想读入任意一个字符,包括各种空白字符,可以使用cin对象的get()函数

[code]char myChar;std::cin.get(myChar)


读入一整行输入,可以使用std::getline()函数,调用它时,需要给出输入流的名字(比如“cin” )作为第一个输入参数,用来保存输入值的变量是第二个输入参数。

我们必须保证在调用std::getline()之前缓冲区里没有任何多余的输入:比如先读取一个整数,再读取一行文本,用户可能输入27后按下回车键,在把27赋给一个整数变量后,那个回车符还留在缓冲区,这将使得下一个std::getline()调用立刻停止读取输入

[code]std::string inputTxt;std::cout << "Say something !!" << std::endl;std::getline(std::cin,inputTxt); //默认情况下,读取数据,直到它遇到一个换行符,换行符是文本行的结束标志std::getline(std::cin,inputTxt,'#'); //getline()还有一个可选的第3个参数,用来定义一个停止字符std::cout << inputTxt << std::endl;  //读取数据,直到它遇到一个#停止


std::getline()函数会丢弃作为作为文本行结束标记的字符,不管是换行符还是其它停止字符。

如果要丢弃输入数据(从缓冲区里删除它,不对它做任何处理),则可以使用ignore()函数

[code]std::cin.ignore() ;    //丢弃单个字符std::cin.ignore(7) ;   //丢弃一定数量的字符,此处为7个std::cin.ignore(10,'/n') ;     //可选的第二个参数是告诉ignore()函数在读到什么字符时停止执行,此处为丢弃10个字符或直到它遇到一个换行符停止


如果想删除整个缓冲区而不仅限于特定数量的字符,可以使用gcount()函数,它将返回缓冲区里的字符个数

[code]std::cin.ignore(std::cin.gcount()+1) ;


对输入数据进行合法性检查

cin对象有几个专门用来报告其工作情况的成员函数,它们将返回一个真/假值来表明cin的状态:

[code]std::cin.eof():如果到达文件(或输入)的末尾,返回truestd::cin.fail():如果cin无法工作,返回truestd::cin.bad():如果cin因为比较严重的原因(比如内存不足)而无法工作,返回truestd::cin.good():如果以上情况都没发生,返回true


如果cin为假或者cin.fail()或cin.bad()调用的返回值是true,说明有问题发生了,这类问题的基本处理步骤是:

先调用std::cin.clear()函数清除cin的出错状态,再调用std::cin.ignore()函数把缓冲区里的现有输入全部丢弃(clear()只清除出错状态,不清理输入缓冲区)

[code]int age;while(!(std::cin >> age)){    std::cin.clear();    std::cin.ignore(std::cin.gcount()+1,'/n') ;    std::cout << "Please enter your age again: " ;}


CPP入门(2):操作符和控制结构CPP入门(3):输入、输出

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索输入 输出 ,以便于您获取更多的相关知识。