当前位置: 首页 > wzjs >正文

梁山专做网站的公司wordpress用代码写页面模板

梁山专做网站的公司,wordpress用代码写页面模板,建设银行包头分行网站,wordpress优惠码插件文章目录 引言C23 概述std::print 和 std::println 函数简介<print> 头文件std::print 函数定义与功能特点使用示例 std::println 函数定义与功能使用示例 格式化字符串详解基本语法实参索引示例 格式说明示例 本地化示例 与其他输出方式的比较与 printf 比较与 std::cou…

文章目录

    • 引言
    • C++23 概述
    • std::print 和 std::println 函数简介
      • <print> 头文件
      • std::print 函数
        • 定义与功能
        • 特点
        • 使用示例
      • std::println 函数
        • 定义与功能
        • 使用示例
    • 格式化字符串详解
      • 基本语法
      • 实参索引
        • 示例
      • 格式说明
        • 示例
      • 本地化
        • 示例
    • 与其他输出方式的比较
      • 与 `printf` 比较
      • 与 `std::cout` 比较
    • 总结

引言

C++作为一门强大且广泛应用的编程语言,在不断地发展和演进。每一个新的标准版本都会为开发者带来一些令人期待的新特性,以提升开发效率和代码的可读性。C++23也不例外,它引入了许多新的特性和改进,其中 头文件中提供的 std::printstd::println 函数就是两个非常实用的格式化输出工具。本文将详细介绍这两个函数的定义、功能和使用示例,帮助大家更好地理解和使用它们。

C++23 概述

C++标准遵循3年开发周期,并以发布年份命名。C++23沿袭了C++17的传统特征,完善了现有特性。与C++ 98、C++11或C++20相比,改变略小。它引入了一些新的核心语言特性,如模板参数捕获、可变参数模板、UTF - 8字符串字面量、更多的类型别名和using声明等。同时,还引入了一些新特性,如简化的工作线程支持、原子操作、普通指针改进、区域性和字符编码以及可以按程度进行编辑的新字符串操作等。而 std::printstd::println 函数的引入,则为输出格式化带来了新的体验。

std::print 和 std::println 函数简介

头文件

C++23 引入的 头文件,旨在简化和增强开发者处理输出格式化的方式。这个头文件定义了 print()println() 两个函数,允许使用Unicode字符集,使C++在输出能力上与其他支持这些特性的编程语言相媲美。

std::print 函数

定义与功能

std::print 函数用于将格式化字符串输出到输出流。它类似于C语言中的 printf() 函数,但内部实现基于现代C++组件。其语法如下:

template< class... Args >
void print( std::format_string<Args...> fmt, Args&&... args );template< class... Args >
void print( std::FILE* stream, std::format_string<Args...> fmt, Args&&... args );

第一个重载形式在默认的输入输出流上输出,第二个重载形式在指定的文件流上输出。

特点
  • 类型安全std::printprintf 的类型安全变体。它是可变参数模板,可以接受任意数量的参数,并且参数会被完美转发。默认情况下,格式字符串中的错误会在编译时被捕获,这消除了一类错误和常见的安全漏洞。
  • 支持用户自定义类型:通过与 std::format 相同的扩展机制,std::print 支持对用户自定义类型进行格式化。大多数标准类型,如容器、范围、日期和时间,都可以直接进行格式化输出。
  • 支持Unicodestd::print 提供了可移植的Unicode支持。只需要确保字符串字面量编码为UTF - 8即可。在POSIX系统上,这通常是默认设置;在Windows/MSVC上,可以通过单个编译器开关 /utf - 8 来启用。
  • 可直接写入C流std::print 可以直接写入C流(文件),绕过了低效的iostream缓冲和额外的同步。
使用示例
#include <print>
#include <iostream>
#include <vector>int main() {// 基本输出std::print("Hello, world!\n");// 输出变量int num = 42;std::print("The value of num is {}.\n", num);// 输出容器std::vector<int> vec = {1, 2, 3};std::print("The vector elements are: {}\n", vec);return 0;
}

std::println 函数

定义与功能

std::println 函数与 std::print 函数类似,只是会在结尾自动补上一个换行符 \n。其语法如下:

template< class... Args >
void println( std::format_string<Args...> fmt, Args&&... args );template< class... Args >
void println( std::FILE* stream, std::format_string<Args...> fmt, Args&&... args );void println( );void println( std::FILE* stream );
使用示例
#include <print>int main() {// 基本输出std::println("Hello, world!");// 输出变量double val = 6.22;std::string hello{ "Hello" };std::println("{} Dos {} !", hello, val);return 0;
}

格式化字符串详解

基本语法

格式化字符串由普通字符(除 {} 外)、转义序列 {{}}(分别替换为 {})以及替换字段组成。每个替换字段有以下两种格式:

  • { arg-id (可选) }:没有格式说明的替换字段。
  • { arg-id (可选) : format-spec }:有格式说明的替换字段。

其中,arg-id 指定了 args 中用于格式化的值的参数索引,如果省略,则按顺序使用参数。format-spec 是由 std::formatter 特化版本定义的格式说明,不能以 } 开头。

实参索引

实参索引用于指定用于格式化它的值在 args 中的参数的下标(顺序索引)。如果省略实参索引,那么将按照 args 中的顺序使用参数。需要注意的是,实参索引要么都不使用,要么就全部指定,格式化字符串不支持部分使用索引的情况。

示例
#include <print>
#include <string>int main() {std::string hello{ "Hello" };double val = 6.22;// 使用实参索引std::print("{1} Dos {0} !\n", val, hello);// 多次使用同一个实参std::string apple{ "apple" };std::print("{1} is a good {1}, but Dos is {0} !\n", val, apple);return 0;
}

格式说明

格式说明部分以 : 为分隔标志,具体的格式由数据类型对应的 std::formatter 特化版本决定,它和 std::format() 函数是同源的。对于基本类型和标准字符串类型,格式说明形式为:
填充与对齐 (可选) 正负号 (可选) # (可选) 0 (可选) 宽度 (可选) 精度 (可选) L (可选) 类型 (可选)

示例
#include <print>
#include <numbers>int main() {double pi = std::numbers::pi;// 指定宽度和精度std::print("{:*>10.5f}\n", pi);// 动态指定格式化参数std::print("{:*>{}.{}f}\n", pi, 10, 5);return 0;
}

本地化

在格式化说明部分,大写的 L 用于指示输出采用本地环境(地域化)的特定形式。当前 L 参数的地域化只支持整数、浮点数以及 bool 类型的文本表示。

示例
#include <print>
#include <locale>struct TrueFalseFacet : std::numpunct<char> {std::string do_truename() const override { return "真"; }std::string do_falsename() const override { return "假"; }
};int main() {std::locale loc = std::locale("zh_CN");std::locale::global(std::locale(loc, new TrueFalseFacet));// 本地化输出std::print("{:L} or {}\n", true, false);return 0;
}

与其他输出方式的比较

printf 比较

  • 类型安全printf 需要手动指定格式说明符,容易出现类型不匹配的问题,而 std::print 是类型安全的,编译时会检查格式字符串和参数的类型。
  • 使用方便std::print 使用花括号 {} 作为占位符,语法更简洁,更符合现代编程习惯。
  • 支持自定义类型std::print 支持通过扩展机制对自定义类型进行格式化,而 printf 没有标准的扩展API。

std::cout 比较

  • 格式化能力std::cout 的格式化功能相对较弱,需要使用 std::setwstd::setprecision 等操纵符来进行格式化,而 std::print 可以直接在格式字符串中指定格式化规则。
  • 代码简洁性std::print 的语法更简洁,代码可读性更高。例如,输出多个变量时,std::print 可以一次性完成,而 std::cout 需要多次使用 << 运算符。

总结

C++23 引入的 std::printstd::println 函数为开发者提供了一种更简洁、更强大的格式化输出方式。它们结合了类型安全、支持Unicode、可自定义类型格式化等优点,使得代码的编写和维护更加容易。同时,格式化字符串的灵活使用也为输出提供了更多的可能性。在实际开发中,建议大家尝试使用这两个函数,体验C++23带来的新特性。


文章转载自:

http://4SEXGHay.wdpbq.cn
http://fT7eCiHe.wdpbq.cn
http://xyNiMeih.wdpbq.cn
http://aPU9q5sW.wdpbq.cn
http://v7a0JUTB.wdpbq.cn
http://JVR1LxW2.wdpbq.cn
http://hv78RLIG.wdpbq.cn
http://BOuGbzZ7.wdpbq.cn
http://UNRbbkb8.wdpbq.cn
http://rkkS37zr.wdpbq.cn
http://zH6MmrVb.wdpbq.cn
http://FilWGLNX.wdpbq.cn
http://CqCbIPj9.wdpbq.cn
http://l0o2PwIo.wdpbq.cn
http://OgONe6Yz.wdpbq.cn
http://vSzWDoIP.wdpbq.cn
http://4Z2hVkSp.wdpbq.cn
http://Q9SSE2Dj.wdpbq.cn
http://NuEQNudK.wdpbq.cn
http://atSbNERB.wdpbq.cn
http://aaZ5Frkf.wdpbq.cn
http://ZQqog6PI.wdpbq.cn
http://2PyTEoSs.wdpbq.cn
http://dP7pgmHd.wdpbq.cn
http://4fBt9fyu.wdpbq.cn
http://AXbVJiRQ.wdpbq.cn
http://2fKQUSh7.wdpbq.cn
http://4VCZNiPV.wdpbq.cn
http://BA0fAGvr.wdpbq.cn
http://2I31MgQU.wdpbq.cn
http://www.dtcms.com/wzjs/654857.html

相关文章:

  • 贵阳做网站电话免费网站整站模板源码
  • 女性时尚网站模板广州建设厅网站首页
  • 怎么开一个做网站的工作室wordpress插件排列
  • 品牌网站制作流程免费作图网站
  • 学院网站建设成果网站开发w亿玛酷1流量订制
  • 网站描述 修改软件工程师培训机构排名
  • 网站建设程序员网页qq登陆保护
  • 如何做好网站seo优化重庆网站排名外包
  • 怎样查看网站开发移动商城touch版h5页面
  • 威海 医院网站建设四川省造价工程信息网
  • 昆明网站建设的公司ps怎么制作网页教程
  • 安徽合肥做网站的公司wordpress移动到回收站时发生错误
  • 深圳便宜建网站自己做网站平台需要服务器
  • 招标网站排名网站seo可以做吗
  • 重庆网站建设 制作 设计 优惠价网站规划建设论文
  • 现在网站前台用什么做重庆智能网站建设价格
  • 交流建设网站软件技术职业
  • 南岗红旗大街网站建设调用wordpress分类名称
  • 做网站需要多少资金上海小程序开发哪家好
  • APP网站开发私人订制山东中恒建设集团网站
  • 深圳哪家公司需要网站建设的wordpress 企业门户
  • a5站长网网站交易石家庄最新事件
  • 做查询网站费用安徽信息工程学院信息门户平台
  • discuz做企业网站做百度推广一个月多少钱
  • 东台哪家专业做网站做自行车网站应该注意什么
  • 做的网站被挂马南阳公司注册
  • 襄阳门户网站建设跨境电商培训哪家最好
  • 电子商务网站建设规划论文建一个网站是不是要开公司
  • 促销礼品网站建设做公司企业网站
  • 网站移动端指的是什么北京网络职业技术学院官网