2015-01-21 248 views
0

C++中“abc”的类型是什么?考生可以是const char*char*C++中“abc”的类型是什么?

还有什么可以想到的吗?

+9

它实际上是'const char [4]'。 – 2015-01-21 12:17:10

+0

我遇到了一个奇怪的铛++编译器行为使用C++ 11 std :: regex_replace。编译器不会接受: 'std :: string text =“快速棕色狐狸”;' 'std :: regex vowel_re(“a | e | i | o | u”);' 错误 - > std :: cout <<'\ n'<< std :: regex_replace(text,vowel_re,“[$&]”)<<'\ n';' works - >'std :: cout < <'\ n'<< std :: regex_replace(text,vowel_re,std :: string(“[$&]”))<<'\ n';' – tisch 2015-01-21 12:21:01

+4

@tisch这是一个完全不相关的问题相信你必须传递'std :: string {“[$&]”}') – Barry 2015-01-21 12:25:25

回答

0

在tutorialspoint我尝试:

#include <iostream> 
#include <typeinfo> 
using namespace std; 

int main() 
{ 
    cout << typeid("abc").name() << endl; 
    cout << typeid (const char *).name() << endl; 
    cout << typeid(char *).name() << endl; 
    cout << typeid(char[4]).name() << endl; 
    cout << typeid(const char[4]).name() << endl; 

    return 0; 
} 

输出是:

A4_c
PKC
PC
A4_c
A4_c

似乎炭[4]或为const char [4 ]但肯定不是char *或者const char *

+1

它是'const char [4]',按照C++ 11§2.14.5¶8(*普通字符串文字和UTF-8字符串文字也被称为窄字符串文字。窄字符串文字具有类型“array 'n'const char'“,其中n是下面定义的字符串的大小,并具有静态存储持续时间(3.7)。*) – 2015-01-21 12:44:46

+2

不要使用'typeid'来告诉类型。有时由标准保证给你错误的答案。 – 2015-01-21 13:05:23

+0

我会猜想它也是const char [4]。我用typeid来说明。对于一个更纯粹的答案,你会写出可能为char [N]中的数字模板化的重载,并查看哪一个可以打印。 – CashCow 2015-01-21 14:14:12