Подтвердить что ты не робот

С++ Confusion. Чтение целого из текстового файла. Конвертировать в ASCII

Я изучаю С++ в первый раз. У меня нет предыдущего фона программирования.

В книге я видел этот пример.

#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". В результате мне нужно указать его, поэтому я выбираю читать данные как char.
  • Я прочитал каждую цифру в файле как char и преобразовал ее в целочисленное значение и сохранил ее в "theinteger".
  • Так как у меня есть целое число в "theinteger", я хочу напечатать его как символ, но char thechar = char (theinteger); не работает должным образом.

Что я делаю неправильно?

4b9b3361

Ответ 1

Вы читаете один char за раз из файла. Следовательно, если ваш файл содержит:

2424

Сначала вы прочитаете char "2" из файла, преобразуете его в int и затем вернетесь к char, который будет печатать "2" в cout. Следующий раунд напечатает "4" и т.д.

Если вы хотите прочитать числа в виде полных чисел, вам нужно сделать что-то вроде:

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

Ответ 2

Вы читаете char char, но вы действительно (я думаю) хотим прочитать каждую последовательность цифр как целое число. Измените свой цикл на:

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

+1 Для очень хорошо отформатированного и выраженного первого вопроса, BTW!