字符串的数据类型是什么?

时间:2012-09-16 23:14:01

标签: c++ string stdstring

这很可能是一个非常愚蠢的问题,但在C ++中,字符串的数据类型是什么?我想让变量x =“Slim Shady”。

我会将x声明为int吗?我已经尝试将它声明为char,但是当我输出变量时,它只给出第一个字母。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:4)

您需要包含头文件字符串

#include <string>

然后你就可以使用std :: string

std::string x="Slim Shady"

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

你也不能使用std :: strings,如果你不想使用它们,尽管它们是你最好的选择

您可以使用Char数组或char指针(C字符串)

char x[]="Slim Shady";

char* x="Slim Shady";

auto关键字是C ++ 0x功能。在学习C ++基础知识之前,你应该远离它

答案 1 :(得分:3)

std::string是最好的选择。但您也可以auto使用auto x = "Slim Shady!";。这意味着您不必弄清楚要使用表达式的类型。

答案 2 :(得分:2)

“Slim Shady”是char[11]类型的常量字面值,可转换为const char*。您还可以使用它来初始化大于11的任何char数组。请参阅:

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");
}

你得到(在gcc上)mangled名字:

PKc
A11_c 

据我所知 - 第一个是const char*,第二个是char[11]。这很容易解释,因为当传递任何函数的数组时 - 它被转换为const指针。

答案 3 :(得分:1)

你的意思是:

std::string x = "Slim Shady";