C或C++中,用双引号括起来的一串字符,编译后一定会在后面加个‘\0’么?解决办法

C或C++中,用双引号括起来的一串字符,编译后一定会在后面加个‘\0’么?
C或C++中,用双引号括起来的一串字符,编译后一定会在后面加个‘\0’么?
如:char str1[]="China"; //这个会加0
  char str2[]="China" "Wonderful"; //这个"China"后没不会加0。
看来字符串的精髓不是字面上想的那个。

------解决方案--------------------
是啊!!!
------解决方案--------------------
编译不管框多少双引号 只要不用分号隔开 都看成一个吧
------解决方案--------------------
C/C++ code
char str2[]="China" "Wonderful";
这个就相当于是:
char str2[]="ChinaWonderful";
比如MFC里的CFileDialog里的过滤字符串有时会很长,为了看起来舒服,会分多行写:

    CFileDialog   fileDialog(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
                            TEXT("所有视频|*.rmvb;*.rm;*.avi;*.wmv;*.mov;*.mpeg;*.mpg;*.mp4;*.flv;*.swf|")
                            TEXT("所有音频|*.mp3;*.wma;*.wav;*.ogg;*.aac;*.mid;*.midi|")
                            TEXT("rmvb(*.rmvb)|*.rmvb|")
                            TEXT("rm(*.rm)|*.rm|")
                            TEXT("avi(*.avi)|*.avi|")
                            TEXT("wmv(*.wmv)|*.wmv|")
                            TEXT("mov(*.mov)|*.mov|")
                            TEXT("mpeg(*.mpeg;*.mpg;*.mp4)|*.mpeg;*.mpg;*.mp4|")
                            TEXT("flash(*.flv;*.swf)|*.flv;*.swf|")
                            TEXT("mp3(*.mp3)|*.mp3|")
                            TEXT("wma(*.wma)|*.wma|")
                            TEXT("wav(*.wav)|*.wav|")
                            TEXT("ogg(*.ogg)|*.ogg|")
                            TEXT("aac(*.aac)|*.aac|")
                            TEXT("mid(*.mid;*.midi)|*.mid;*.midi|")
                            TEXT("所有文件(*.*)|*.*||"));