Rumah > Soal Jawab > teks badan
书上说,以下代码创建的对象包含多次的指定字符,重复次数由计数器指定
请问这是怎么回事?,括号里的直接初始化(10,‘9’)是什么意思?
std:string all_nines(10,'9');//all_nines="9999999999"
PHPz2017-04-17 13:30:11
此处调用了std::string
的构造函数,你可以把这个构造函数的形式理解为std::string(count, ch);
,即第一个参数为重复字符的个数,第二个参数为用于重复的字符。例如:
std::string s1(4, 'a'); // s1 为 "aaaa"
std::string s2(5, '-'); // s2 为 "-----"
实际上std::string
是std::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);
。
高洛峰2017-04-17 13:30:11
就是string
的一个构造函数,第一个参数10
表示有多少个字符,第二个参数'9'
表示这些字符的初始值。
类似的还有vector<int> arr(100, 0)
表示一个大小为100
元素全部初始化为0
的vector
。