Sublime Text 3在Windows 10下运行C++程序输出异常(显示十六进制字符)求助
搞定Sublime Text 3中C++输出文件变十六进制的问题
嘿,我一眼就看出来问题出在哪了——你看到的那些奇怪十六进制字符其实是正常输出的ASCII码十六进制表示!比如30就是字符0,0d0a是Windows系统里的换行符\r\n,说白了你的程序根本没写错,只是输出文件的打开方式或者文件名搞了个小乌龙。
两步解决问题
1. 调整编译配置(可选但推荐)
把你当前的编译配置里的输出文件名从outputf.in改成outputf.txt,同时给重定向符号前后加个空格(让Windows Shell解析更顺畅),修改后的配置如下:
{ "cmd": ["g++.exe","-std=c++17", "${file}", "-o", "${file_base_name}.exe", "&&" , "${file_base_name}.exe < inputf.in > outputf.txt"], "shell":true, "working_dir":"$file_path", "selector":"source.cpp" }
改文件名的原因是.in后缀可能被你的系统关联到了十六进制编辑器,改成.txt会让系统默认用记事本这类文本工具打开,直接看到正常输出。
2. 检查输出文件的打开方式
如果不想改文件名,那右键点击outputf.in,选择打开方式,手动指定用记事本、Notepad++或者其他文本编辑器打开,别用十六进制查看工具(比如HxD)就行。这样打开后就能看到0到9的正常输出了。
为啥会发生这事?
你的C++代码逻辑完全没问题,循环输出0到9加换行,对应的ASCII码转成十六进制就是你看到的那串字符。问题出在文件的显示环节:要么是.in后缀被系统默认用十六进制工具打开,要么是你之前不小心把这个后缀的文件关联改了。
内容的提问来源于stack exchange,提问作者Reckon Mazumdar
相关产品推荐
相关产品推荐

