这个
之间有什么区别(如果有的话)_T("a string")
和
_T('a string')
答案 0 :(得分:4)
首先,_T
不是C ++的标准部分。我在你的问题中添加了“windows”标签。
现在,它们之间的区别在于第一个是正确的而第二个不是。在C ++中,'
用于引用单个字符,"
用于引用字符串。
答案 1 :(得分:3)
第二个是错的。您将字符串文字放在单引号之间。
答案 2 :(得分:3)
'a string'
是一个所谓的“多字符文字”。它具有类型int
和实现定义的值。这是标准中的[lex.ccon]
。
我不知道MSVC对多字符文字的值是什么,我不确定MS特定的_T
宏最终会用它做什么,但我希望你得到一个狭窄的多字符文字在窄版本上,以及广泛构建的广泛多字符文字。字符串和字符文字的前缀L
是相同的。
这是错的,无论如何:多字符文字几乎没用,当然也不能替代字符串。 "a string"
是一个字符串文字,这就是你想要的。
答案 3 :(得分:2)
您将''
用于单个字符,将""
用于字符串。 _T('a string')
是错误的,其行为是特定于编译器的。
对于MSVC,它仅使用第一个字符。例如:
#include <iostream>
#include <tchar.h>
int main()
{
if (_T('a string') == _T('a'))
std::cout << (int)'a' << " = " << _T('a');
}
输出:97 = 97
答案 4 :(得分:1)
单引号主要用于表示单个字符:
char c = 'e' ;
双引号与字符串和输出语句一起使用:
string s = "This is a string";
cout << "Output where double quotations are used.";