C++ 中双引号内的字符串的数据类型是什么

what's the data type of a string inside the double quote in c++

本文关键字:字符串 数据类型 是什么 C++      更新时间:2023-10-16
void main() {
    cout << "Hello World" << endl;
}

我不允许对上述主要功能进行任何更改,而屏幕上的输出需要如下所示:

初始化
世界您好
收拾

我的想法是我需要使用 << 的重载运算符。但是我需要知道运算符<<后面的双引号字符串的数据类型是什么,否则我将无法充分利用我重新定义的<<运算符。有人觉得吗?

文字的类型是"{合适数量的} const chars 数组",但更好的方法可能是拥有某种全局对象。

(为数组添加重载甚至可能不起作用,因为char const *的现有重载会妨碍。

您可以重新定义std::ostream& operator<< (std::ostream&, const char*) .这种方法存在一个巨大的问题:它是未定义的行为。标准库已经定义了该函数,并且不允许重新定义标准库函数。

解决此问题的关键是认识到cout位于全局命名空间中。解决方案很简单:编写自己的类来重载operator<<,并创建一个名为 cout 的全局变量作为此类的实例。这样您就不会遇到未定义的行为。

您还需要对全局命名空间中的endl执行一些操作。

您的代码应如下所示

// Insert your code here.
int main () {
   cout << "Hello World" << endl;
}

由于这看起来像家庭作业,剩下的就交给你了。

字符串文本的类型是char const[n] 其中n是字符串文本中的字符数,包括终止 null 字符。但是请注意,问题的解决方案不是重载operator<<()。相反,您应该查看具有静态实时的构造函数、析构函数和变量。