【发布时间】:2020-04-22 10:00:55
【问题描述】:
我正在尝试在 VS 2015 中运行这个简单的代码
#include "stdafx.h"
# include <iostream>
int main()
{
char * szOldPath = "\"C:\icm\scripts\StartupSync\runall.bat\" nonprod";
std::cout << szOldPath << std::endl;
return 0;
}
但是,szOldPath的输出不正确,控制台正在打印--
unall.bat" nonprodupSync
我怀疑这可能是因为 Unicode,我应该使用 wcout。因此,我通过转到配置属性-> 常规-> 字符集禁用了 Unicode,并尝试将其设置为未设置或多字节。但是还是遇到了这个问题。
我知道禁用 UNICODE 不好,但我正在尝试理解我们公司编写的一些遗留代码,这个实验是这个练习的一部分,有什么方法可以让 cout 命令成功打印 szOldPath?
【问题讨论】:
-
您需要对一些以 `\` 字符开头的序列进行转义,因为它们构成了有效的转义序列:en.cppreference.com/w/cpp/language/escape
-
理查德,感谢您的及时答复。我还有一个后续问题,如果我们使用 count 而不是 wcout,我们应该始终禁用 UNICODE 对吗?
-
您可以毫无问题地混合
cout和wcout,只要您将正确类型的字符串传递给它们。
标签: c++ windows visual-studio winapi