书上说,以下代码创建的对象包含多次的指定字符,重复次数由计数器指定
请问这是怎么回事?,括号里的直接初始化(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
。