84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
书上说,以下代码创建的对象包含多次的指定字符,重复次数由计数器指定
请问这是怎么回事?,括号里的直接初始化(10,‘9’)是什么意思?
std:string all_nines(10,'9');//all_nines="9999999999"
走同样的路,发现不同的人生
此处调用了std::string的构造函数,你可以把这个构造函数的形式理解为std::string(count, ch);,即第一个参数为重复字符的个数,第二个参数为用于重复的字符。例如:
std::string
std::string(count, ch);
std::string s1(4, 'a'); // s1 为 "aaaa" std::string s2(5, '-'); // s2 为 "-----"
实际上std::string是std::basic_string这个模板类在特定参数下的别名(typedef):
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);。
http://en.cppreference.com/w/cpp/string/basic_string/basic_string
就是string的一个构造函数,第一个参数10表示有多少个字符,第二个参数'9'表示这些字符的初始值。
string
10
'9'
类似的还有vector<int> arr(100, 0)表示一个大小为100元素全部初始化为0的vector。
vector<int> arr(100, 0)
100
0
vector
简化的原理
此处调用了
std::string
的构造函数,你可以把这个构造函数的形式理解为std::string(count, ch);
,即第一个参数为重复字符的个数,第二个参数为用于重复的字符。例如:实际的原理
实际上
std::string
是std::basic_string
这个模板类在特定参数下的别名(typedef
):而真正的构造函数是
其中第三个参数有默认值,在调用时候可以不提供,从而转化成了
std::string(count, ch);
。http://en.cppreference.com/w/cpp/string/basic_string/basic_string
就是
string
的一个构造函数,第一个参数10
表示有多少个字符,第二个参数'9'
表示这些字符的初始值。类似的还有
vector<int> arr(100, 0)
表示一个大小为100
元素全部初始化为0
的vector
。