如何使 MinGW 将像 "text" 这样的文本视为常量字符*

How to make MinGW to treat texts like "text" as const char*

本文关键字:文本 常量 字符 MinGW 何使 将像 text      更新时间:2023-10-16

ok,升级到MinGW 4.4后。*一段时间以前,我所有的字面上写的字符串(如"i'm the string")都被视为std::string类型。有什么命令行选项可以让MinGW像以前一样把它们当作const char*吗?

字符串在C/c++中默认是char */char[],只有当你明确地说它是std::string时,你才会得到这些。

例子:

std::cout << "first:t" << typeid("aa").name() << std::endl;
std::cout << "second:t" << typeid(std::string("a")).name() << std::endl;
输出:

first:  A3_c
second: Ss
结果:

  • first:一个长度为3 (= 2 char + end)的char数组
  • 秒:是std::string

正如你所看到的,如果你写"abc",你不会得到一个std::string

但是:如果你写std::string str = "abc",你得到一个std::string,因为使用了赋值运算符(=): string& operator= (const char* s)