c++prime 中提到的用计数器初始化对象

查看:90
本文介绍了c++prime 中提到的用计数器初始化对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

书上说,以下代码创建的对象包含多次的指定字符,重复次数由计数器指定

 请问这是怎么回事?,括号里的直接初始化(10,‘9’)是什么意思?

 std:string all_nines(10,'9');//all_nines="9999999999"
  

解决方案

简化的原理

此处调用了std::string的构造函数,你可以把这个构造函数的形式理解为std::string(count, ch);,即第一个参数为重复字符的个数,第二个参数为用于重复的字符。例如:

std::string s1(4, 'a');  // s1 为 "aaaa"
std::string s2(5, '-');  // s2 为 "-----"


实际的原理

实际上std::stringstd::basic_string这个模板类在特定参数下的别名(typedef):

typedef basic_string<char, char_traits<char>, allocator<char>> string;

而真正的构造函数是

basic_string( size_type count, 
              CharT ch, 
              const Allocator& alloc = Allocator() );

其中第三个参数有默认值,在调用时候可以不提供,从而转化成了std::string(count, ch);

这篇关于c++prime 中提到的用计数器初始化对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆