Как читать один символ за раз из текстового файла - PullRequest
0 голосов
/ 17 октября 2019

Вот моя функция, в которой есть следующий код. Примечание: он уже объявлен в основном и работает отлично.

void displaySeatingChart(char seats[][colvalue], float prices[rowvalue])
{
    string filename = "seatingChart.dat";
    ifstream inFile(filename);

    for (rows = 1; rows <= rowvalue; rows++)
    {
        string newLine;
        cout << "Row #" << rows << "\t";
        for (cols = 1; cols <= colvalue; cols++)
        {
            inFile >> newLine;
            cout << newLine;
        }
        cout << endl;
    }
}

rows равен 15, а cols равен 30. Моя проблема в том, что cout << newline печатает буквально весь файл (которыйв основном все #). Как я могу напечатать всего 15 символов, а не как 1500?

1 Ответ

3 голосов
/ 17 октября 2019
inFile >> newLine;

Это читает все до символа пробела. Если ваш файл содержит все символы в одной строке и не содержит пробелов, имеет смысл, чтобы вышеприведенная строка считывала содержимое всего файла.

Чтобы прочитать один символ за раз, используйте

char c = inFile.get();

Ваш внутренний цикл будет:

for (cols = 1; cols <= colvalue; cols++)
{
    char c = inFile.get();
    cout << c;
}

См. Документацию для istream::get() для получения дополнительной информации.

...