C++/CLI——使用嵌套 if 语句的 CLR 程序
来源:互联网 发布:重庆网站推广优化外包 编辑:程序博客网 时间:2024/06/01 10:31
// 嵌套ifCLR.cpp: 主项目文件。#include "stdafx.h"using namespace System;int main(array<System::String ^> ^args){ wchar_t letter; Console::WriteLine(L"Enter a letter: "); letter = Console::Read(); if(letter >= 'A') if(letter <= 'Z') { Console::WriteLine(L"You entered a captial letter."); return 0; } if(letter >= 'a') if(letter <= 'z') { Console::WriteLine(L"You entered a small letter."); return 0; } Console::WriteLine(L"You did not enter a letter."); return 0;}
按照书上的代码,运行时窗口一闪就消失了。
可是在编写C++/CLI控制台应用程序时,发现即使使用了Console::ReadLine(); ,运行时窗口仍然消失了。
看到网上有人提出解决办法,我打算总结一下。
首先解释一下关于缓冲区的内容。
每个输入输出流都维护一个字符缓冲区,用于从流接收输入,或者用于输出到流。原程序在执行letter=Console::Read();后出现一个输入提示符,假如输入's',然后回车,相当于输入了's\r\n',而's'被读到了letter变量里,这时缓冲区里的内容会是'\r\n',即残留了回车键值。Console::ReadLine()每次读取一行,即可以将行尾的回车键读走;Console::Read();每次读取一字符,需要两次将'\r\n'读走,这样才能清空到缓冲区。
原程序的不妥在于,执行Console::ReadLine()时,缓冲区里有\r\n,它会将缓冲区里第一个\r\n及其前面的内容(这里是空)读走,不必等待用户输入,用户也就没机会输入了。直接就闪了
在此总结一下网友的测试结果(自己已验证):
如果只在Console::WriteLine (L"You did not enter a letter." );后添加两个Console::Read();,那么窗口还是消失;
如果在Console::WriteLine语句后添加三个Console::Read();,那么窗口可以显示;
如果在Console::WriteLine语句后添加两个Console::Read();和一个Console::ReadLine();,那么窗口也可以显示;
如果在Console::WriteLine语句后直接添加两个Console::ReadLine();,那么窗口也可以显示;
而在Console::WriteLine语句后添加一个Console::Read();和一个Console::ReadLine();,窗口也消失了。
// 嵌套ifCLR.cpp: 主项目文件。#include "stdafx.h"using namespace System;int main(array<System::String ^> ^args){wchar_t letter; Console::WriteLine(L"Enter a letter: ");letter = Console::Read();if(letter >= 'A')if(letter <= 'Z'){Console::WriteLine(L"You entered a captial letter.");Console::ReadLine();Console::ReadLine();return 0;}if(letter >= 'a')if(letter <= 'z'){Console::WriteLine(L"You entered a small letter.");Console::ReadLine();Console::ReadLine();return 0;}Console::WriteLine(L"You did not enter a letter.");Console::ReadLine();Console::ReadLine(); return 0;}
- C++/CLI——使用嵌套 if 语句的 CLR 程序
- 《C语言及程序设计》程序阅读——if语句的嵌套
- C语言:if语句的嵌套
- C语言——if-else语句嵌套
- 条件语句if的嵌套使用
- IF语句的嵌套
- if语句的嵌套
- 《C语言及程序设计》实践项目——if语句的嵌套
- 第12周 《C语言及程序设计》实践项目——if语句的嵌套
- Java语言——else if语句嵌套的优化
- 嵌套的if-else语句
- if语句的嵌套问题
- if..else语句的嵌套
- 24 if语句的嵌套
- C++ if语句的嵌套
- 关于if语句的嵌套
- C++ if语句的嵌套
- C语言简单实用的程序-if else 嵌套式的使用例子
- C++第十五题201150409
- 第23题
- LeetCode - Interleaving String
- P51-17
- 如何在Linux上从命令行嗅探HTTP流量
- C++/CLI——使用嵌套 if 语句的 CLR 程序
- Photon Server
- $resource
- Matlab有用的小工具小技巧
- 妖哲开始搞前端3 变形!导航栏
- 10个最酷的namp技巧/技术
- 排序与过滤
- CodeForces 30E Tricky and Clever Password(hash+manacher)
- 第六周项目程序阅读(5)