字符串的数据类型是啥? [关闭]

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

【讨论】:

以上是关于字符串的数据类型是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

delphi中string[]是啥数据类型?

java中的引用数据类型是啥意思?

redis数据类型是啥?

SQL 国家字符 (NCHAR) 数据类型的真正用途是啥?

数据库的数据类型中,Unicode数据是啥意思

数据库中的十种数据类型都是啥