使用cout API时出现字符输出错误
Garbled character output when using cout API
我正试图在VS 2015 中运行这个简单的代码
#include "stdafx.h"
# include <iostream>
int main()
{
char * szOldPath = ""C:icmscriptsStartupSyncrunall.bat" nonprod";
std::cout << szOldPath << std::endl;
return 0;
}
但是,szOldPath的输出不正确,控制台正在打印--
unall.bat" nonprodupSync
我怀疑这可能是因为Unicode,我应该使用wcout。因此,我通过转到"配置属性"->"常规"->"字符集"禁用了Unicode,并尝试将其设置为"不设置"或"多字节"。但仍然遇到这个问题。
我知道禁用UNICODE是不好的,但我正在努力理解我们公司编写的一些遗留代码,这个实验是这个练习的一部分,有什么方法可以让cout命令成功打印szOldPath吗?
您的问题与Unicode无关。
r
是回车的转义序列。因此,打印"C:icmscriptsStartupSync
,然后r
告诉终端将光标移回当前行的开头,然后打印unall.bat" nonprod
,覆盖已经存在的内容。
您需要转义字符串文字中的所有字符,就像必须转义
"
字符一样。
此外,在为指针分配字符串文字时,需要将变量声明为指向const char
的指针。这在C++11及更高版本中强制执行:
#include "stdafx.h"
#include <iostream>
int main()
{
const char * szOldPath = ""C:\icm\scripts\StartupSync\runall.bat" nonprod";
std::cout << szOldPath << std::endl;
return 0;
}
或者,在C++11及更高版本中,您可以使用原始字符串文字来避免对任何带有前导:的字符进行转义
const char * szOldPath = R"("C:icmscriptsStartupSyncrunall.bat" nonprod)";
相关文章:
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- 字符的输入/输出操作
- 如何读取单个字符并在输入两个字符序列时输出? 使用 while 循环和C++
- C++输出奇怪的字符而不是数字 (Windows)
- 如何存储 unicode 字符并将其输出到文件?
- C++中附加的字符*的奇怪输出
- 来自无符号字符缓冲区的虚拟输出
- 将未签名的字符写入输出文件
- 在大小为 10 的 char 数组中输入超过 10 个字符的字符串并输出时,它会显示整个数组而不是前 10 个数组.为什
- 如何在C++中正确地将我的语言字符输出到HTML文件中
- x86 上的指针大小和奇怪的字符输出
- 如何修复C++中的随机字符输出?
- Visual Studio-怪异的字符输出
- 需要我当前的字符输出,这是它在C++中的整数值
- 宽字符输出结果
- 将字符输出随机化为文本文件
- C++和printf-奇怪的字符输出
- 显示无符号字符*和有符号字符*输出的结果是否完全相同
- 下一个回文 .奇怪的字符输出
- 不要将宽字符输出到命令提示符