这很可能是一个非常愚蠢的问题,但在C ++中,字符串的数据类型是什么?我想让变量x =“Slim Shady”。
我会将x声明为int吗?我已经尝试将它声明为char,但是当我输出变量时,它只给出第一个字母。任何帮助将不胜感激。
答案 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";