【发布时间】:2016-05-31 21:38:27
【问题描述】:
最近我在 Visual Studio 2008 中遇到了一个错误(至少我认为是一个)。
当我尝试使用两个问号后跟另一个字符创建 string-literals 时,会发生一些奇怪的事情:这三个字符被另一个字符替换。
例子:
printf("??-"); --> ~ (hyphen)
printf("??'"); --> ^ (circumflex)
printf("??="); --> # (hash)
printf("??)"); --> ] (square braket)
printf("??("); --> [ (square braket)
printf("??/"); --> \ (backslash)
printf("??!"); --> | (pipe)
printf("??%"); --> ?? (percent sign disappears)
有人知道更换的原因吗?
【问题讨论】:
-
不确定原因,但
printf(@"??-");必须有效。而且我知道您正在寻找原因而不是解决方案。但只是指出它可以帮助某人 -
我认为您可以通过使用
\?而不是普通的?来避免这些替换。 -
最后一个是“正常”行为 - 到
printf和%你需要%%格式字符串。 -
@Reddy:不,printf(@"??-") 不适用于 VS2008 和 C++
-
这是个好问题。 +1
标签: c++ visual-studio-2008 string-literals character-replacement