Как импортировать разделы текстового файла в четыре разных строки - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть текстовый файл, разделенный на четыре главы / разделы.Я хотел бы импортировать этот текстовый файл, с каждым разделом, идущим к отдельной строковой переменной.Таким образом, раздел 1 файла сохраняется в строковой переменной 1 и т. Д.

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

Прямо сейчас у меня есть это, взятый из примера кода лекции:

string filename = "JuteBook.txt";
string juteBook;

for (int i = 0; i < 6; i++)
{
    ifstream f(filename, std::ios_base::binary);
    if (!f.good())
    {
        filename = "../" + filename;
        continue;
    }

    static const size_t start = 0;
    static const size_t amount = 0x1819;

    f.seekg(start);
    char buf[amount];
    f.read(buf, amount);
    juteBook.assign(buf, amount);
}

int juteBookLength = juteBook.length();

int calculation = juteBookLength / 4;
int finalNumber = round(calculation);

1 Ответ

0 голосов
/ 22 апреля 2019

Попробуйте что-то вроде этого:

static const unsigned int  section_size = 0x1819;
char buffer[section_size];
std::string s1;
std::string s2;
std::string s3;
std::string s4;
// code to open file
f.read(buffer, section_size);
s1.assign(buffer, section_size);
f.read(buffer, section_size);
s2.assign(buffer, section_size);
f.read(buffer, section_size);
s3.assign(buffer, section_size);
f.read(buffer, section_size);
s4.assign(buffer, section_size);
f.close();

Только за 4 чтения я решил встроить; ИМХО, намного эффективнее, чем петля.

Приведенный выше код назначает буфер 4 переменным для каждого сообщения.

Я мог бы дать лучший ответ, но мне нужно больше информации о назначении и содержании входного файла. Например, вы хотите разделить файл на 4 равные части? или разделить по абзацу? Можете ли вы использовать std::vector вместо отдельных переменных? Вы действительно нуждаетесь в , чтобы одновременно хранить все содержимое файла в памяти, или вы можете обрабатывать файл кусками?

...