带有_T宏的C++中的字符串文字
String literals in C++ with _T macro
这个之间有什么区别(如果有的话)
_T("a string")
和
_T('a string')
首先,_T
不是C++的标准部分。我在你的问题上加了"windows"标签。
现在,它们之间的区别在于,第一个是正确的,第二个不是。在C++中,'
用于引用单个字符,"
用于引用字符串。
第二个错误。您正在将字符串文字置于单引号之间。
'a string'
是所谓的"多字符文字"。它具有类型int
和一个实现定义的值。这是标准中的[lex.ccon]
。
我不知道MSVC给多字符文字赋予了什么值,也不确定特定于MS的_T
宏最终会对它做什么,但我希望在窄构建中得到窄的多字符文字,在宽构建中得到宽的多字符文本。前缀L
对于字符串和字符文字是相同的。
无论如何,这是错误的:多字符文字几乎没有用,当然也不能代替字符串。"a string"
是一个字符串文字,这正是您想要的。
单个字符使用''
,字符串使用""
。_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
单引号主要用于表示单个字符:
char c = 'e' ;
双引号用于字符串和输出语句:
string s = "This is a string";
cout << "Output where double quotations are used.";
相关文章:
- 我可以使用条件运算符初始化C风格的字符串文字吗
- 如何使用字符串文字作为宏参数
- 有没有办法从非C/C++文件中读取C++原始字符串文字的内容
- 构造<int>具有 2 个字符串文字的向量
- 初始化或分配空字符串文字到指向 C 中的 char 的指针或指向 C++ 中 const char 的指针的原因是什么
- 方便地对C++中的所有字符串文字进行模糊处理
- 比较 std::string 和 C 样式字符串文字
- 如何从char16_t字符串文字中读取双精度?
- 如果我在块中编写字符串文字,是否会从数据部分复制整个字符串数据?
- C++ 不能在cout中使用向量和字符串文字
- 为什么必须将 const 添加到 constexpr 中才能进行字符串文字声明?
- C++:Unicode 字符串文字的可移植性
- 返回空字符串文字 VS. 返回空点 - 它们是一样的吗?
- 确保字符指针始终指向相同的字符串文字
- 如何按照 Google C++风格指南连接字符串文字?
- 通过 constexpr 中的 'const char *' glvalue 访问字符串文字的值会出错
- 字符串文字到 char 数组的转换如何在C++中实际工作
- 另一个字符串文字,UDL 迷宫
- strlen 是否针对字符串文字进行了优化?
- 用户定义的字符串文字为字符串null终止