文件输出到记事本.txt

时间:2011-10-01 21:32:13

标签: c++ ascii notepad++ fstream

我不能这么说,所以我只是陈述事实。

情况: 我的C ++程序将扩展的ascii字符输出到文本文件。

问题: 当我用记事本打开我的文本文件时,它会错误地显示这些字符。 (我使用的是Windows XP)

结论: 如果我不得不猜测,我会说记事本使用错误的编码保存我的文件。有没有办法解决它,所以我的程序将正确的输出保存到文本文件?

代码片段:

char box[] = {
    201, 205, 187,
    186, 32, 186,
    200, 205, 188           
};

当我outputFile << box[0]时,我的预期结果是“╔”。相反,记事本显示“É”。

预期产出:

╔═════╗
║1.   ║
║     ║
║     ║
╚═════╝

记事本输出:

ÉÍÍÍÍÍ»
º1.   º
º     º
º     º
ÈÍÍÍÍͼ

编辑:好的。我现在明白了我的错误。记事本使用ANSI编码。为什么当我运行我的程序并将其播放到屏幕时,它显示为“╔”?我正在使用Dev-C ++编写我的程序 - 这是否意味着我使用的是过时的编码?在C ++中是否有任何方法可以改变我使用的字符的编码?

4 个答案:

答案 0 :(得分:4)

您在“扩展ASCII”中使用方框图字符已过时。默认情况下,记事本可能正在使用Latin-1 (ISO-8859-1)编码,它代表一组不同的字符。

答案 1 :(得分:1)

这是一个'递归'解决方案:

  • 选择上面显示正确输出的框并将其复制到剪贴板
  • 打开记事本
  • 将其粘贴到记事本中(看起来不错)
  • 保存记事本文件(选择Unicode或UTF-8编码)并对其进行分析以找出您需要编写的内容以获得该输出

我相信你可以从上面猜到,要获得这些字符,你必须编写一个Unicode文本文件。

答案 2 :(得分:1)

更复杂的文本编辑器(如Notepad++)可让您选择编码。 UTF-8将显示您期望的符号。

答案 3 :(得分:0)

如果要在编辑器中查看这些线条图字符,则需要选择Windows 终端字体。

相关问题