- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3表达式和语句,表达式和语句的区别,python表达式和语句,python的表达式和语句,sql语句正则表达式,case语句表达式,表达式语句,c语言表达式语句,sql语句表达式,if语句中的表达式
3.13 循环和文本输入 在用循环读取来自键盘的文本输入时,必须有办法知道何时输入结束。可以通过设置“哨兵字符”来解决: char ch; int count = 0; // use basic input cout Enter characters; enter # to quit:\n; cin ch; // 读一个字符,忽略空白符 while (ch != #) // test the character { cout ch; // echo the character ++count; // count the character cin ch; // get the next character } cout endl count characters read\n; 程序有可能是需要空白符的,修正如下 char ch; int count = 0; cout Enter characters; enter # to quit:\n; cin.get(ch); // use the cin.get(ch) function while (ch != #) { cout ch; ++count; cin.get(ch); // use it again } cout endl count characters read\n; 程序也有可能是需要“#”之类的哨兵字符的 如果输入是来自文件,则可以检测到文件尾(EOF)。输入流对象有一流状态数据成员。若检测到文件尾,则流状态的eofbit和failbit两个位置1。 eofbit为1可由cin.eof()检测到; eofbit和failbit两个位为1可由cin.fail()检测到。 在DOS的键盘输入中,可以用行首的^z来模拟文件尾。 cin.get(ch); // use the cin.get(ch) function while ( !cin.fail() ) { cout ch; ++count; cin.get(ch); // use it again } 其中的循环条件可以简化为 while ( cin ) { … } 更进一步,循环可以简化为 while ( cin.get(ch) ) { cout ch; ++count; } 但是void*型指针不能直接被解除引用 #include cstring int ival = 1024; void *pv; int *pi = ival; const char *pc = a casting call; void mumble() { pv = pi; // ok: pv 指向 ival pc = pv; // 错误: 没有标准的转换 char *pstr = new char[ strlen( pc )+1 ]; strcpy( pstr, pc ); } void mumble() { // ok: 仍然是错误的, 但是现在可以通过编译! // 因为在赋值前用了显式强制转换 // 当程序失败时应该首先检查强制转换 pc = static_cast char* ( pv ); // 仍然是一个灾难 char *pstr = new char[ strlen( pc )+1 ]; strcpy( pstr, pc ); } 执行显式强制转换的第二个原因是希望改变通常的标准转换 double dval; int ival; ival += dval; //隐式转换 ival += static_cast int ( dval ); //显式转换 进行显式强制转换的第三个原因是要避免出现多种转换可能的歧义情况。在函数名重载时讨论 显式转换符号的一股形式如下 cast-name type ( expression ); 这里的cast-name 是static_cast, const_cast, dynamic_cast 和reinterpret_cast 之一 const_cast ,将转换掉表达式的常量性 extern char *string_copy( char* ); const char *pc_str; char
文档评论(0)