[英]Which std::string constructor is being called here?
我正在嘗試用C ++構造一個字符串,如下所示。
const char *cstring = "abcd";
const string cppstr = string(cstring, cstring + strlen(cstring));
這工作正常,cppstr的值為“abcd”,即使它與標准中指定的任何字符串構造函數都不匹配。 任何人都可以告訴我在這種特殊情況下調用哪個字符串構造函數。
有一個模板化的構造函數,它將兩個InputIterator作為輸入。 (參見cppreference.org參考,構造函數(6) )。 原始C ++指針滿足InputIterators的所有要求(實際上,它們是RandomAccessIterators)。 因此,打電話
string(cstring, cstring + strlen(cstring)
調用此構造函數。 該構造函數通過迭代迭代器描述的元素范圍並將字符串構造為這些元素的副本來工作。
作為一個注釋,你也可以寫
const string cppstr{cstring, cstring + strlen(cstring)};
而不是給cppstr
賦值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.