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

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

Восстановить пароль Регистрация
 
JamesBlack
 Аватар для JamesBlack
36 / 36 / 3
Регистрация: 28.07.2009
Сообщений: 144
02.05.2010, 15:59     Чтение файла #1
Знаю, что очень ламерский вопрос... Вот только нихрена не получается! Я и так и сяк вертел...

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

Добавлено через 51 минуту
подскажите, плиз.
MikeSoft
Эксперт C++
 Аватар для MikeSoft
3781 / 1765 / 85
Регистрация: 21.11.2009
Сообщений: 2,540
03.05.2010, 15:46     Чтение файла #4
JamesBlack, а чем вас не устраивает getline ?
Если интересно посимвольное чтение файла, то перемещаться по файлу поможет seekg.
Почитать о ней можно здесь: http://www.cplusplus.com/reference/i...istream/seekg/
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
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     Чтение файла
Ответ Создать тему
Опции темы

Текущее время: 16:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru