本 Wiki 开启了 HTTPS。但由于同 IP 的 Blog 也开启了 HTTPS,因此本站必须要支持 SNI 的浏览器才能浏览。为了兼容一部分浏览器,本站保留了 HTTP 作为兼容。如果您的浏览器支持 SNI,请尽量通过 HTTPS 访问本站,谢谢!
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
cs:programming:cpp:courses:cpp_basic_deep:chpt_7 [2024/12/10 05:37] – [检测异常状态的方法] codinghare | cs:programming:cpp:courses:cpp_basic_deep:chpt_7 [2024/12/10 15:16] (当前版本) – [基于绑定的同步] codinghare | ||
---|---|---|---|
行 281: | 行 281: | ||
<< | << | ||
</ | </ | ||
+ | * '' | ||
+ | * 转换为 bool 值时不会考虑 '' | ||
+ | ==利用状态== | ||
+ | <code cpp> | ||
+ | // 判断之前的输入提取是否成功 | ||
+ | if(std::cin >> x) { //} | ||
+ | </ | ||
+ | ==复位流的状态== | ||
+ | * '' | ||
+ | * '' | ||
+ | <code cpp> | ||
+ | std:: | ||
+ | </ | ||
+ | ==捕获流的异常== | ||
+ | * 可以通过 '' | ||
+ | ====流的定位==== | ||
+ | 提取写入时,需要考虑提取写入的位置(定位)。C++ 为此引入了流的定位: | ||
+ | * 获取流 | ||
+ | * 设置流 | ||
+ | ===获取流位置=== | ||
+ | * '' | ||
+ | * '' | ||
+ | * 两者返回一个为整数的 '' | ||
+ | * '' | ||
+ | ===设置流位置=== | ||
+ | * '' | ||
+ | ==两个重载版本== | ||
+ | * 设置绝对位置:接收 '' | ||
+ | * 设置相对位置:接收基本位置('' | ||
+ | ====流的同步==== | ||
+ | 系统默认的 “缓冲区满再输入到设备的” 行为很可能带来一些问题: | ||
+ | <code cpp> | ||
+ | // 如果 some test 所在流没有满,导致没有被输出到终端 | ||
+ | std::cout << "some test"; | ||
+ | std::string name; | ||
+ | // 导致输入时没有提示 | ||
+ | std::cin >> name; | ||
+ | </ | ||
+ | 这种情况下需要**刷新缓冲区**,也就是强制输出缓冲区内容送到设备上。 | ||
+ | ===基于方法的同步=== | ||
+ | * '' | ||
+ | <code cpp> | ||
+ | // 成员调用 | ||
+ | std:: | ||
+ | // 操纵符 | ||
+ | std::cout << x << std:: | ||
+ | </ | ||
+ | * '' | ||
+ | * 同文件同时关联了输入输出流,要对输入流刷新,得到输出流的信息 | ||
+ | * 具体行为与编译器实现有关系 | ||
+ | * '' | ||
+ | * 行为:大于一个字符的流必须被清除出缓存区 | ||
+ | * 结果:自动立即刷新(影响性能) | ||
+ | * 通常与 '' | ||
+ | ===基于绑定的同步=== | ||
+ | C++ 中,任意流都可以绑定到一个**输出流**上。当绑定时,绑定流会记录被绑定流中的信息。当绑定时: | ||
+ | * 绑定流在每次输入(输出)时,都会刷新**被绑定流**的缓冲区 | ||
+ | * 绑定流可以同时与多个输出流绑定 | ||
+ | 这种方法实际上从另外的角度解决了之前提到过的问题: | ||
+ | <code cpp> | ||
+ | // 如果 some test 所在流没有满,导致没有被输出到终端 | ||
+ | std::cout << "some test"; | ||
+ | std::string name; | ||
+ | // 导致输入时没有提示 | ||
+ | std::cin >> name; | ||
+ | </ | ||
+ | 此时如果 '' | ||
+ | 文本输入终端。 | ||
+ | ===与 C 标准 I/O 的同步=== | ||
+ | * 缺省情况下会与 C 同步 | ||
+ | * 可以通过 '' |