С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

02.05.2010, 15:59. Просмотров 587. Ответов 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 минуты
Могут ли быть какие-то проблемы в кодировках?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2010, 15:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чтение файла (C++):

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

Чтение из файла. Повторное чтение файла - C++
Добрый день. Необходимо реализовать в программе функцию повторного чтения данных из файла, в случае некорректного ввода их в оный. Вот...

Преобразование текстового файла в двоичный и чтение исходных данных из двоичного файла. - C++
#include<iostream> #include<fstream> #include<locale.h> #include<iomanip> #include <cstdlib> using namespace std; struct...

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

как может корректно выполняющийся оператор >> (чтение из текстового файла) негативно влиять на открытие другого файла? - C++
Друзья! Создадим два текстовых файла, f_0.txt и f_1.txt и что-нибудь в них запизаем, например в первый запихаем 1234 а во второй 5678 и...

Чтение файла с несколькими знаками конца файла - C++
В файле несколько раз встречается ноль, и ни как не получается прочитать его полностью. Как можно решить данную проблему ?

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

Добавлено через 51 минуту
подскажите, плиз.
0
MikeSoft
Эксперт С++
3802 / 1778 / 85
Регистрация: 21.11.2009
Сообщений: 2,540
03.05.2010, 15:46 #4
JamesBlack, а чем вас не устраивает getline ?
Если интересно посимвольное чтение файла, то перемещаться по файлу поможет seekg.
Почитать о ней можно здесь: http://www.cplusplus.com/reference/iostream/istream/seekg/
0
easybudda
Модератор
Эксперт CЭксперт С++
9700 / 5650 / 964
Регистрация: 25.07.2009
Сообщений: 10,873
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;
}
0
03.05.2010, 16:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2010, 16:46
Привет! Вот еще темы с ответами:

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

Чтение из файла С++ - C++
Прочитать из txt файла данные, так чтобы пропустить первые 16 и и вывести на экран 3 столбца: Latitude, longitude, depth и затем сохранить...

Чтение из файла - C++
задание: помогите с 3 заданием!!! как можно сделать что бы программа считывала файл auto.txt и распределяла данные по классам, ...

Чтение из файла - C++
формат файла: text, 200 text2, 180 и т.д.... #include &lt;math.h&gt; #include &lt;stdio.h&gt; struct cars {


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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