字符串的数据类型是啥? [关闭]
Posted
技术标签:
【中文标题】字符串的数据类型是啥? [关闭]【英文标题】:What is the data type for a string? [closed]字符串的数据类型是什么? [关闭] 【发布时间】:2012-09-16 23:14:01 【问题描述】:这很可能是一个非常愚蠢的问题,但是在 C++ 中,字符串的数据类型是什么?我想让变量 x = "Slim Shady"。
我会将 x 声明为 int 吗?我试过将它声明为一个字符,但是当我计算变量时,它只给出第一个字母。任何帮助将不胜感激。
【问题讨论】:
这肯定在教程中有所介绍......某处? (不,字符串更肯定不是整数。)std::string
是你使用的。
这是基本的,非常基本的东西。只需谷歌“c/c++ 中的字符串”,您就会获得数千种资源。
请不要用谷歌搜索“c/c++ 中的字符串”,除非您正在寻找 C 中的字符串。没有称为 C/C++ 的语言,而且 C 与 C++ 完全不同。改为谷歌std::string
。
为什么投反对票?这可能是一个菜鸟问题,但我不认为这是一个不好的问题。
【参考方案1】:
你需要包含头文件字符串
#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++ 基础之前,你应该远离它
【讨论】:
【参考方案2】:std::string
是最好的选择。但您也可以使用auto
,如auto x = "Slim Shady!";
。这意味着您不必弄清楚使用表达式的类型。
【讨论】:
“这意味着你不必弄清楚使用表达式的类型。” - 直到你需要对它做任何有意义的事情,在这种情况下你'需要知道类型是char*
(或const char*
,取决于你的编译器)。
@EdS.:它必须是char const*
。 char*
表示字符串文字格式不正确。
不要让初学者开始使用自动
他应该使用糟糕的 C 数组声明,amirite?
@Xeo:你是对的;类型是一个 const char 数组。但是,从const char[]
到char*
的转换是完美定义的,所以它不是你说的“格式错误”。修改数据只是未定义的行为。【参考方案3】:
“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");
你得到(在 gcc 上)mangled 名字:
PKc
A11_c
据我所知 - 第一个是 const char*
,第二个是 char[11]
。这很容易解释,因为当将任何数组传递给函数时 - 它会转换为 const 指针。
【讨论】:
【参考方案4】:你的意思是:
std::string x = "Slim Shady";
【讨论】:
以上是关于字符串的数据类型是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章