C++之ostream标识函数flags、setf、unsetf、precision、width、imbue、getloc、xalloc、iword、pword等总结(二百一十)

本文主要是介绍C++之ostream标识函数flags、setf、unsetf、precision、width、imbue、getloc、xalloc、iword、pword等总结(二百一十),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

1.前言

本篇目的:理解C++之ostream函数flags、setf、unsetf、precision、width、imbue、getloc、xalloc、iword、pword、register_callback、sync_with_stdio用法。

    1. flags()函数用于获取和设置格式标志的值。
    1. setf()函数用于设置格式标志。其参数可以是一个格式标志的组合,用位掩码(比如std::ios_base::hex | std::ios_base::showbase)来进行设置。该函数还可以接受一个可选参数field,用于指定要设置的字段的范围。
    1. unsetf()函数用于取消设置的格式标志。传递给unsetf()的参数可以是一个格式标志的组合,用位掩码来进行取消设置。
    1. precision()函数用于设置浮点数显示的精度。
    1. width()函数用于设置字段的宽度。
    1. imbue()函数用于设置流的区域设置(locale)。
    1. getloc()函数用于获取流的区域设置。
    1. xalloc()函数用于分配一个新的索引,用于用户自定义的扩展。
    1. iword()函数用于获取或设置流特定的整数状态。
    1. pword()函数用于获取或设置流特定的指针状态。
    1. register_callback()函数用于注册一个回调函数,以处理流状态变化的通知。
    1. sync_with_stdio()函数用于同步stdio的输入输出,可以提高标准输入输出流的性能。

2.应用实例

1. flags()函数获取和设置流的格式标志的值。

#include <iostream>int main() {std::ostream stream(nullptr);  // 创建一个空流std::ios_base::fmtflags flags = stream.flags();  // 获取当前格式标志的值std::cout << "Flags: " << flags << std::endl;return 0;
}

2. setf()函数用于设置格式标志。

#include <iostream>int main() {std::ostream stream(nullptr);  // 创建一个空流stream.setf(std::ios_base::dec | std::ios_base::showpos);  // 设置十进制和显示正号的格式标志std::cout << "Number: " << 10 << std::endl;return 0;
}

3. unsetf()函数用于取消设置的格式标志。

#include <iostream>int main() {std::ostream stream(nullptr);  // 创建一个空流stream.setf(std::ios_base::hex);  // 设置十六进制的格式标志std::cout << "Number: " << 10 << std::endl;stream.unsetf(std::ios_base::hex);  // 取消设置的十六进制格式标志std::cout << "Number: " << 10 << std::endl;return 0;
}

4. precision()函数设置浮点数显示的精度。

#include <iostream>int main() {std::ostream stream(nullptr);  // 创建一个空流stream.precision(3);  // 设置浮点数的显示精度为3std::cout << "Float: " << 3.14159 << std::endl;return 0;
}

5. width()函数用于设置字段的宽度。

#include <iostream>int main() {std::ostream stream(nullptr);  // 创建一个空流stream.width(4);  // 设置字段宽度为4std::cout << "Number: " << 10 << std::endl;return 0;
}

6. imbue()函数用于设置流的区域设置。

#include <iostream>
#include <locale>int main() {std::ostream stream(nullptr);  // 创建一个空流std::locale loc("en_US.UTF-8");  // 创建一个英语区域设置stream.imbue(loc);  // 设置流的区域设置为英语std::cout << "Language: " << std::endl;return 0;
}

7. getloc()函数用于获取流的区域设置。

#include <iostream>
#include <locale>int main() {std::ostream stream(nullptr);  // 创建一个空流std::locale loc = stream.getloc();  // 获取流的区域设置std::cout << "Locale: " << loc.name() << std::endl;return 0;
}

8. xalloc()函数用于分配一个新的索引。

#include <iostream>int main() {std::ostream stream(nullptr);  // 创建一个空流int index = stream.xalloc();  // 分配一个新的索引stream.iword(index) = 42;  // 设置索引处的整数状态为42std::cout << "State: " << stream.iword(index) << std::endl;return 0;
}

9. iword()函数用于获取或设置流特定的整数状态。

#include <iostream>int main() {std::ostream stream(nullptr);  // 创建一个空流int index = stream.xalloc();  // 分配一个新的索引stream.iword(index) = 42;  // 设置索引处的整数状态为42std::cout << "State: " << stream.iword(index) << std::endl;return 0;
}

10. pword()函数用于获取或设置流特定的指针状态。

#include <iostream>int main() {std::ostream stream(nullptr);  // 创建一个空流int index = stream.xalloc();  // 分配一个新的索引stream.pword(index) = new int(42);  //设置索引处的指针状态为指向一个值为42的整数的指针int* ptr = static_cast<int*>(stream.pword(index));  // 获取索引处的指针状态std::cout << "Value: " << *ptr << std::endl;delete ptr;  // 释放动态分配的内存return 0;
}

11. register_callback()函数用于注册一个回调函数。

#include <iostream>void callback_function(std::ios_base::event ev, std::ios_base& stream, int index) {if (ev == std::ios_base::event::erase_event) {std::cout << "Callback: Erase Event Triggered" << std::endl;} else if (ev == std::ios_base::event::imbue_event) {std::cout << "Callback: Imbue Event Triggered" << std::endl;}
}int main() {std::ostream stream(nullptr);  // 创建一个空流stream.register_callback(callback_function, 0);  // 注册回调函数stream.setf(std::ios_base::hex);  // 设置格式标志,将触发imbue事件stream.setf(std::ios_base::dec);  // 设置格式标志,将触发erase事件return 0;
}

12. sync_with_stdio()函数用于同步stdio的输入输出。

#include <iostream>int main() {std::ostream stream(nullptr);  // 创建一个空流stream.sync_with_stdio(true);  // 同步stdio的输入输出std::cout << "Hello, World!" << std::endl;  // 使用同步的stdio输出return 0;
}

这篇关于C++之ostream标识函数flags、setf、unsetf、precision、width、imbue、getloc、xalloc、iword、pword等总结(二百一十)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/340893

相关文章

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

C++中RAII资源获取即初始化

《C++中RAII资源获取即初始化》RAII通过构造/析构自动管理资源生命周期,确保安全释放,本文就来介绍一下C++中的RAII技术及其应用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、核心原理与机制二、标准库中的RAII实现三、自定义RAII类设计原则四、常见应用场景1. 内存管理2. 文件操

C++中零拷贝的多种实现方式

《C++中零拷贝的多种实现方式》本文主要介绍了C++中零拷贝的实现示例,旨在在减少数据在内存中的不必要复制,从而提高程序性能、降低内存使用并减少CPU消耗,零拷贝技术通过多种方式实现,下面就来了解一下... 目录一、C++中零拷贝技术的核心概念二、std::string_view 简介三、std::stri

C++高效内存池实现减少动态分配开销的解决方案

《C++高效内存池实现减少动态分配开销的解决方案》C++动态内存分配存在系统调用开销、碎片化和锁竞争等性能问题,内存池通过预分配、分块管理和缓存复用解决这些问题,下面就来了解一下... 目录一、C++内存分配的性能挑战二、内存池技术的核心原理三、主流内存池实现:TCMalloc与Jemalloc1. TCM

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

C++作用域和标识符查找规则详解

《C++作用域和标识符查找规则详解》在C++中,作用域(Scope)和标识符查找(IdentifierLookup)是理解代码行为的重要概念,本文将详细介绍这些规则,并通过实例来说明它们的工作原理,需... 目录作用域标识符查找规则1. 普通查找(Ordinary Lookup)2. 限定查找(Qualif

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与