Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
JamesBlack
37 / 37 / 3
Регистрация: 28.07.2009
Сообщений: 144
#1

Чтение файла - C++

02.05.2010, 15:59. Просмотров 562. Ответов 4
Метки нет (Все метки)

Знаю, что очень ламерский вопрос... Вот только нихрена не получается! Я и так и сяк вертел...

Вобщем, есть файл .txt с записями вида
целое_число строка_неопределенной_длины\n

так вот, мне нужно считать все эти записи из файла и занести в массив структур Data: int key, char *record, int recordsize;

проблема в том, что когда я читаю вот так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int tmp_key [200];
char trash;
char tmp_record [200][256];
ifstream base("database.txt");
int count=0;
while (!base.eof())
{
    base >> tmp_key[count];
    base >> trash;
    base.getline(tmp_record[count], 256,'\n');
    base >> trash;
    count++;
}
base.close();
нифига не получается!

Добавлено через 4 минуты
Могут ли быть какие-то проблемы в кодировках?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2010, 15:59     Чтение файла
Посмотрите здесь:

Чтение из файла - C++
Здравствуйте, прошу помощи... Я только начала изучение, поэтому еще слишком плохо разбираюсь даже в элементарных вещах, прошу не судить...

Чтение из файла - C++
Проясните, пожалуйста, один вопрос: есть файл такого содержания - 12 23 32 43 45 95 Простейшая программа: #include<iostream> ...

чтение файла - C++
Как реализовать след.: считывать файл до определённого символа?

Чтение из файла - C++
здравствуйте господа форумчане. у меня на мой взгляд глупый вопрос, но уж так сложилось что тямы на него самому ответить не хватает. ...

Чтение из файла - C++
Подскажите как из txt файла в нутри которого 0x004FE6A4 считать это значение в переменную DWORD? Добавлено через 6 минут Ну то есть...

Чтение из файла с++ - C++
почитал темы на форуме например эту,http://www.cyberforum.ru/cpp-beginners/thread60250.html предпоследнее сообщение, по этому примеру...

Чтение файла - C++
Не видит или не может открыть фаил: #include <conio.h> #include <stdlib.h> #include <stdio.h> #include <iostream> #include...

чтение из файла - C++
в блокноте есть массив вещественных чисел.числа в каждой строчке разделены пробелами. нужно считать их таким образом, чтобы каждый...

Чтение из файла. - C++
Вобщем есть класс типа алфавитной карты человека (Имя, фамилия, пол, возраст, зарплата и полученая зарплата + функция вывода этих...

Чтение файла в 16-СС - C++
Здравствуйте, как можно реализовать следующее: Нужно открыть файл для чтения в бинарном режиме, считывать по три байта и записывать их в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
staaas1k
2 / 2 / 0
Регистрация: 19.02.2010
Сообщений: 96
02.05.2010, 16:12     Чтение файла #2
Файл должен быть в кодировке DOS'а. Попобуй вывести все содержимое файла на экран, если каракули выйдут то используй какой нит текстовый редактор типа DosPad'а
JamesBlack
37 / 37 / 3
Регистрация: 28.07.2009
Сообщений: 144
02.05.2010, 18:24  [ТС]     Чтение файла #3
Действительно, с 866 кодировкой он стал нормально читать. Такой вопрос: а как мне считать символьную строку вплоть до символа \n? Или если использовать цикл и считывать по символу, то какая функция возвращает следующий символ из потока, при этом не переходя за него (т.е. он будет считан после, а не пропущен)?

Добавлено через 51 минуту
подскажите, плиз.
MikeSoft
Эксперт С++
3791 / 1773 / 85
Регистрация: 21.11.2009
Сообщений: 2,540
03.05.2010, 15:46     Чтение файла #4
JamesBlack, а чем вас не устраивает getline ?
Если интересно посимвольное чтение файла, то перемещаться по файлу поможет seekg.
Почитать о ней можно здесь: http://www.cplusplus.com/reference/i...istream/seekg/
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
03.05.2010, 16:46     Чтение файла #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <string>
#include <utility>
#include <vector>
#include <fstream>
#include <cstdlib>
 
int main(){
    std::vector<std::pair<int, std::string> > vec;
    int num, pos;
    std::string buf, s;
 
    std::ifstream ifs("numbers_strings.txt");
    if ( !ifs.is_open() ){
        std::cerr << "Can't open input file!" << std::endl;
        return 1;
    }
    while ( std::getline(ifs, buf) ){
        num = std::atoi(buf.c_str());
        s = ( ( pos = buf.find_first_not_of("0123456789 \t") ) == std::string::npos ) ? "" : buf.substr(pos);
        vec.push_back(std::pair<int, std::string>(num, s));
    }
    ifs.close();
 
    for ( std::vector<std::pair<int, std::string> >::const_iterator i = vec.begin(); i != vec.end(); ++i )
        std::cout << i->first << '\t' << i->second <<std::endl;
 
    return 0;
}
Yandex
Объявления
03.05.2010, 16:46     Чтение файла
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru