Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
2 / 2 / 1
Регистрация: 23.11.2011
Сообщений: 87
1

Чтение таблицы с разделителем

24.03.2013, 21:05. Просмотров 600. Ответов 0
Метки нет (Все метки)


Доброго времени суток,

Есть файл в формате :

строка;еще строка;и еще\n
1;2;3\n
;;\n
str;4;5\n
EOF

или

строка;еще строка;и еще\n
1;2;3\n
;;\n
str;4;5EOF

читаю файл вот так:

C++
1
2
3
4
5
6
7
8
std::string tmp_str, s;
std::ifstream file;
file.open(FileName.c_str(), std::ios_base::in);
while (getline(file, tmp_str)) {
        while (getline(ss, s, ';')) {
            std::cout <<"|"<< s <<"|"<< std::endl;
        }
}
проблема в том, что если за ';' идет EOF или \n то внутренний цикл проводит только две операции вывода, мне необходимо контролировать формат файла, т.е. мне нужно на каждом ряду получать количество ';' и потом записывать то что между ними в соответствующие элементы структуры, первая вторая и четвертая строки поддаются контролю, но втретьей строке таким способом я получаю только две пустые строки, а надо три, как это можно организовать? Не через c_string же делать.

Добавлено через 2 часа 49 минут
На данный момент остановился на этом

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
30
bool processLine(std::stringstream &ss, Document *Doc) {
    std::string s;
    int i = 0;
    while (true) {
        if (!getline(ss, s, DELIM)) {
            getline(ss, s, DELIM);
            if (!(int) s.c_str()[0]) {
                if (!PROCESS_EMPTY_LINES) {
                    return false;
                }
                if (!addString2Struct(s, Doc->m_StrRecords[Doc->m_StrRecordsCnt], i)) {
                    return false;
                }
                i++;
            }
            break;
        }
        if (!addString2Struct(s, Doc->m_StrRecords[Doc->m_StrRecordsCnt], i)) {
            return false;
        }
        i++;
    }
    if (Doc->m_StrRecordsCnt == 0) {
        Doc->m_StrCnt = i;
    }
    if (i != Doc->m_StrCnt) {
        return false;
    }
    return true;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2013, 21:05
Ответы с готовыми решениями:

Чтение файла c разделителем
QStringList IP,PORT; QFile file(&quot;test.txt&quot;); file.open(QIODevice::ReadOnly | QIODevice::Text);...

Чтение из текстового файла построчно и с разделителем
Допусти есть текстовый документ в котором такая запись: ролкот:ajfhvg asdfh:gfgfffh и так далее...

Исключение на десятичным разделителем при чтение из базы данных
В базе данных есть набор цифр (0.060 0.074 0.088), они по очереди считываются в переменную...

Экспорт из таблицы access данных из определённых полей в файл .txt с разделителем используя delphi
Доброго времени суток. Долго искал, но не смог найти целостной картины по теме, возможно...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.03.2013, 21:05

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Чтение csv файла с разделителем ";"
Всем привет. Подскажите как реализовать чтение файла csv с разделителем &quot;;&quot; и занесением...

Чтение таблицы PostgreSQL
Console.WriteLine(&quot;подключаемся к базе &quot;); NpgsqlConnection conn = new...

Чтение гугл таблицы
У меня есть код import json import gspread from oauth2client.client import...

Чтение поля из таблицы
Сразу к задаче, есть таблица в базе данных TABLE, в ней два поля это логин и пароль. Нужно, чтобы...

Чтение столбцов из таблицы
Доброго времени суток. Подскажите пожалуйста как сделать что бы считывалось не одно значение со...

чтение таблицы из txt
доброго времени суток! Дали задание провести интерполяцию некоторого массива, содержащегося в txt...


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

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

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