2012-09-16 33 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指针。

相关问题