2012-09-16 32 views
0

這很可能是一個非常愚蠢的問題,但在C++中,字符串的數據類型是什麼?我想讓變量x =「Slim Shady」。字符串的數據類型是什麼?

我會聲明x爲int嗎?我試圖將它聲明爲char,但是當我關閉變量時,它只會給出第一個字母。任何幫助,將不勝感激。

+4

當然這是在教程中介紹的..某處? (不,一個字符串更肯定*不是*整數。) – 2012-09-16 23:15:29

+1

'std :: string'就是你使用的。 – squiguy

+0

你如何在你的代碼中使用它? std :: string x?另外,如果你說使用命名空間標準,你可以只說字符串x? – masonc15

回答

1

你只是說:

std::string x = "Slim Shady"; 
3

std::string是最好的選擇。但是您也可以使用auto,如auto x = "Slim Shady!";。這意味着你不需要找出使用表達式的類型。

+1

*「這意味着你不需要找出使用表達式的類型。」* - 直到你需要對它做任何有意義的事情,在這種情況下,你需要知道類型是'char * '(或者'const char *'取決於你的編譯器)。 –

+0

+1,爲一個整潔的把戲。 – mjgpy3

+1

@EdS .:它*具有* char const * *。字符串文字的char *'不合格。 – Xeo

4

你需要包含頭文件字符串

#include <string> 

然後,你將能夠使用的std :: string

std::string x="Slim Shady" 

http://en.cppreference.com/w/cpp/string/basic_string

你也不能使用std ::字符串,如果你不想使用它們雖然它們是你最好的選擇

可以使用字符陣列或字符指針(C-字符串)

char x[]="Slim Shady"; 

char* x="Slim Shady"; 

自動關鍵字是一個C++ 0X特徵。您應該遠離它,直到您學習C++基礎知識

2

「Slim Shady」是常量字面值char[11],可轉換爲const char*。您也可以將其用於任何字符數組比11.看大的初始化:

char a[] = "Slim Shady"; 
char a[11] = "Slim Shady"; 
const char* a = "Slim Shady"; 
char a[12] = "Slim Shady"; 

看到這個小碼:

#include <typeinfo> 
#include <iostream> 

template <class T> 
void printTypeName(T t) 
{ 
    std::cout << typeid(T).name() << std::endl; 
} 

int main() { 
    printTypeName("Slim Shady"); 
    printTypeName<decltype("Slim Shady")>("Slim Shady"); 
} 

你得到(海合會)mangled名稱:

PKc 
A11_c 

從我所知道的 - 第一個是const char*第二個是char[11]。這很容易解釋,因爲當傳遞任何數組到函數 - 它被轉換爲const指針。

相關問題