【问题标题】:C++ Confusion. Reading Integer From Text File. Convert to ASCIIC++ 混乱。从文本文件中读取整数。转换为 ASCII
【发布时间】:2011-01-14 20:44:22
【问题描述】:

我是第一次学习 C++。我没有以前的编程背景。

在我的书中我看到了这个例子。

#include <iostream>

using::cout;
using::endl;

int main()
{
    int x = 5;
    char y = char(x);

    cout << x << endl;
    cout << y << endl;

    return 0;
}

这个例子很有意义:打印一个整数和它的 ASCII 表示。

现在,我用这些值创建了一个文本文件。

48
49
50
51
55
56
75

我正在编写一个程序来读取这个文本文件——“theFile.txt”——并希望将这些数字转换为 ASCII 值。

这是我写的代码。

#include <iostream>
#include <fstream>

using std::cout;
using std::endl;
using std::ifstream;

int main()
{
    ifstream thestream;
    thestream.open("theFile.txt");

    char thecharacter;  

    while (thestream.get(thecharacter))
    {
        int theinteger = int(thecharacter);
        char thechar = char(theinteger);
        cout << theinteger << "\t" << thechar << endl;
    }


    system ("PAUSE");
    return 0;
}

这是我对显示的第二个程序的理解。

  • 编译器不知道“theFile.txt”中包含的确切数据类型。因此,我需要指定它,因此我选择将数据读取为字符。
  • 我将文件中的每个数字作为字符读取并将其转换为整数值并将其存储在“整数”中。
  • 因为我在“theinteger”中有一个整数,所以我想将它作为一个字符打印出来,但是 char thechar = char(theinteger);没有按预期工作。

我做错了什么?

【问题讨论】:

  • 那么,你的程序现在做什么呢?
  • 不应该是using std::cout;吗?
  • 感谢您注意到我的错误。我提出了错误的代码。将在几分钟内更新。
  • 这是我们错过在 SO 上看到的第一个问题的类型。恭喜。
  • 这完全偏离了轨道,所以我写它只是作为评论。如果您可以掌握 Accelerated C++,请查看它。它有一种完全不同的学习 C++ 的方法,从 STL 和高级构造开始,然后再深入细节。

标签: c++ char ascii new-operator int


【解决方案1】:

您正在逐个字符地读取字符,但您确实(我认为)希望将每个数字序列读取为整数。将循环更改为:

int theinteger; 
while (thestream >> theinteger )
{
    char thechar = char(theinteger);
    cout << thechar << endl;
}

+1 对于第一个问题的格式和表达非常好,顺便说一句!

【讨论】:

  • 是的,你是对的,尼尔。我想完整地阅读每个数字。每个数字都在自己的行上。在您打算做某事但使用了不正确的命令时,是否经常出现这样的疏忽?我希望这是有道理的。
【解决方案2】:

您一次从文件中读取一个字符。因此,如果您的文件包含:

2424

您将首先从文件中读取 char“2”,将其转换为 int,然后再转换回 char,这将在 cout 上打印“2”。下一轮将打印“4”,以此类推。

如果您想将数字读取为完整数字,您需要执行以下操作:

int theinteger;
thestream >> theinteger;
cout << char(theinteger) << endl;

【讨论】:

  • 哦,我明白了。一个(字符)演员是一个单一的。哦,我的愚蠢错误。
猜你喜欢
  • 2010-10-18
  • 1970-01-01
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
  • 2014-04-21
  • 2011-08-05
  • 1970-01-01
  • 2013-03-01
相关资源
最近更新 更多