[英]c++ how to create std::string containing size uninitialized bytes?
[英]Value and size of an uninitialized std::string variable in c++
如果字符串是這樣定義的
std::string name;
未初始化的字符串“name”的值是多少,它的大小是多少?
因為它未初始化,所以它是被調用的默認構造函數。 然后 :
空字符串構造函數(默認構造函數):
構造一個空字符串,長度為零個字符。
看看: http : //www.cplusplus.com/reference/string/string/string/
編輯:如C ++ 11,§21.4.2/ 1中所述 :
E ff ects:構造一個basic_string類的對象。 該函數的后置條件如表63所示。
-> Table 63
+-----------------------------------------------------------------------------+
| data() | a non-null pointer that is copyable and can have 0 added to it |
+------------+----------------------------------------------------------------+
| size() | 0 |
+------------+----------------------------------------------------------------+
| capacity() | an unspecified value |
+-----------------------------------------------------------------------------+
它不是未初始化的,它的默認構造函數被調用。
來自http://en.cppreference.com/w/cpp/string/basic_string/basic_string :
默認構造函數。 構造空字符串。
默認構造的用戶定義類型不是未初始化的。 默認構造函數定義一個大小/長度為零的空字符串(即""
)。
標准(C ++ 11,§21.4.2/ 1)描述了默認構造std::basic_string
(其中std::string
是一個特化)的結果,如下所示:
[...]類
basic_string
的對象。 后置條件[...]如表63所示。
表63說:
data()
一個非空指針,可以復制並且可以添加0
size()
0
capacity()
未指定的值
value為null,size為0但是如果字符串為空,則可以通過empty()直接chk
如果您想在應用程序中檢查,請執行此操作
std::string name // Construct an empty string
if(name.empty()) { // Check if its empty
name="something";
}
類似且更詳細的討論在這里將字符串初始化為null與空字符串
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.