VL
Viktor Lebedev.

потоковое считывание столбцов из файла с++

Добрый день, уважаемые коллеги!
У меня есть файл, в котором содержатся данные ввиде 3-х столбцов:
A a @
B b 8
C c [
....

Моя задача состоит в том, чтобы вывести эти данные в поток, а затем на экран. Я пытаюсь сделать следующее: создать структуру, состоящую из 3 элементов, открыть файл и в цикле выводить до конца файла эти данные:

struct Replaces
{
char first_symbol ;
char second_symbol ;
char third_symbol ;
};

int main()
{
ifstream inputFile("replaces");
Replaces replace;

int n;
while(n!=inputFile.eof())
{
inputFile>> replace.first_symbol;
inputFile>> replace.second_symbol;
inputFile>> replace.third_symbol;
cout<< replace.first_symbol <

cout<< replace.second_symbol<

cout<< replace.third_symbol <

}
inputFile.close();
return 0;
}
На выходе получаю полнейший бред
Вопросы у меня следующие:
1) правильно ли делать это через структуру?
2) если я на правильном пути, то почему поток не инициализируется данными? Как это исправить?
С Уважением!

Что то я попробовал такой вариант, который был предложн ниже, все равно не хочет выводить. А сравнение было нужно вот зачем. Я хотел сначала научиться выписывать данные типа char, а затем отже самое попробовать сделать с типом int, чтобы можно было складывать, вычитать и т. д.
<< replace.first_symbol[n] << ' '
<< replace.second_symbol[n] << ' '
<< replace.third_symbol[n] << endl;
Как то так примерно. Кстати, тук как лучше делать-в открытую или в личку писать?

В дальнейшем мне надо будет сделать следующее с этой программой. Моя задача полная состоит в следующем. Надо ввести текст с клавиатуры, и этот текст должен будет переведен в типохакерский язык. А словарь перевода находится в другом файле, который таким образом нужно будет открыть

Уважаемый ra, спасибо огромное! Все работает, я просто не туда файл записал!!!

А, вот все таки заключительный вопрос: если у меня 3строка состоит не из одного символа, а из 3, например
Y y \//
Z z -/_
Как мне ее ввести в массив char?
Т. е. я пытаюсь сделать так
char massiv_first_element[40];
char massiv_second_element[40];
char massiv_third_element[40];

int n=0;
while (inputFile >> replace.first_symbol
>> replace.second_symbol
>> replace.third_symbol)
{
massiv_first_element[n]=replace.first_symbol;
massiv_second_element[n]=replace.second_symbol;
massiv_third_element[n]=replace.third_symbol;
n++;
выдается ошибка перехода от char* к char

ПП
Паша Прокопенко

Как-то так:

#include
#include

using namespace std;

struct Replaces {
char first_symbol ;
char second_symbol ;
char third_symbol ;
};

int main() {
ifstream inputFile("replaces");
Replaces replace;

while (inputFile
>> replace.first_symbol
>> replace.second_symbol
>> replace.third_symbol) {
cout
<< replace.first_symbol << ' '
<< replace.second_symbol << ' '
<< replace.third_symbol << endl;
}
}

> 1) правильно ли делать это через структуру?
Если вам удобно через структуру, то значит правильно. По мне, так тут достаточно использовать три символьных переменных. Впрочем, что дальше нужно делать с этими символами неизвестно (вы об этом ничего не сообщаете) , может быть и в дальнейшем будет удобнее работать со структурой.

> 2) если я на правильном пути, то почему поток не инициализируется данными? Как это исправить?

> int n;
n неинициализирована

> while(n!=inputFile.eof())
Зачем тут нужно это сравнение?

Update:
> Что то я попробовал такой вариант, который был предложн ниже, все равно не хочет выводить.
Для программы какая папка является рабочей? Вот туда ваш файл и положите. Или напишите полный путь к файлу, типа: ifstream inputFile("c:/temp/replaces");
Все работает:


> Кстати, тук как лучше делать-в открытую или в личку писать?
Набрать нужное число баллов, отвечая на вопросы, и получите возможность разрешать комментарии в к ответам.

Похожие вопросы
Вопрос по считыванию клавиши в C#
С++. Проверка при считывании из файла.
считывание из файла в С
STL считывание из файла. Проблема с переходом внутри файла.
Как скомбинировать потоковые классы в Java, чтобы дозаписать данные в файл с использованием определённой кодировки?
посимвольное считывание текстового файла си
Потоковая передача, как реализовать?
Считывание таблицы из тхт
Как при считывании файла потоком ifstream считать файл до конца? C++
Запись и считывание ОЗУ