什么类型的"C风格字符串"以及它与std :: string的关系

Gal*_*aum 1 c++

我面对这个问题进行C++考试,而且我认为我知道答案,这个问题让我很困惑,我宁愿每个人都说"第二意见"......哈哈.

a)文字"Hello, World!"是C风格的字符串.它的类型是什么?

b)鉴于C风格字符串的类型和类型std::string不同,如何在std::string hello("Hello,World!");没有错误/警告的情况下编译该行(假设<string>已包含标题)?

根据我的理解,C-Style字符串是类型(a)字符数组,而std::string类型为字符串...和(b)它编译的原因是在C++中整个转换为字符,所有这些都是在"引擎盖"由类型字符串而不是"在代码中".

我对么?

谢谢!

Ste*_*sop 6

你说的内容可能足够接近被称为"真实",尽管你遗漏了一些细节."Hello, World!"C++ 中的文字类型是const char[14].正如你所说,这是一个字符数组,但大小是类型的一部分.

std::string有一个构造函数const char*,并且有一个隐式转换从const char[14]const char*.这两个一起处理(b).

但是,没有涉及"铸造角色".