簡體   English   中英

c ++中未初始化的std :: string變量的值和大小

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM