Реализация getline для своего класса string

364
07 марта 2017, 17:06

Здравствуйте, помогите пожалуйста, проблема в функции getline(),которая принимает 2 аргумента: Входной поток, из которого следует извлечь строку и строка, в которую считываются символы из входного потока. Есть дополнительный 3й аргумент , но я его не использую.

Моя проблема , что я реализую собственный класс String и getline() конечно же ругается на второй аргумент, так как он не тот, который ему нужен, а мой пользовательский.

не могли бы мне подсказать, как правильно реализовать метод getline() с моим аргументом?

Я надеюсь, что мой класс String, я реализую правильно, поэтому , я не показываю его код из-за объема и ненадобности. Проблема в методе.

Код , где я использую getline():

string str; // typedef мой класс Sring для удобства
    int readCount = 0;
    int n = atoi(num);
    readRecord.open(fileName);
    if (_access(fileName, 0) != 0) {
        std::cout << "Error:FILE NOT FOUND" << std::endl;
        exit(1);
    }
    else {
        while (std::getline(readRecord, str))// здесь именно моя проблема  
        {
            readCount++;
            lines.push_back(str);
        }
Answer 1

Вам нужно реализовать свою функцию. Вариант первый - берете стандартную, читаете в стандартную строку, а потом присваиваете эту строку вашей.

Вариант второй - читаете по символу, пока не встретите '\n', и добавляете их в свою строку. Тоже ничего сложного. Правда, не самый эффективный способ, но, думаю, для обычных применений вполне годится. Можно в принципе работать прямо с rdbuf, это быстрее, но и писать сложнее.

Поскольку ничего о внутренностях вашей строки вы не написали, никаких набросков кода привести не могу.

READ ALSO
Посчитать количество единиц в числе

Посчитать количество единиц в числе

Вопрос предельно прост: надо посчитать количество единиц в двоичном представлении числа за О(1)Линии и логарифмы даже не предлагайте

469
Выбор СУБД для написания программы C++

Выбор СУБД для написания программы C++

ЗдравствуйтеС какой СУБД проще всего работать новичку в C++? На C# работал с Access, но теперь эта СУБД запрещена, поэтому нужна альтернатива

331
Как работает shared_mutex?

Как работает shared_mutex?

Не вполне понимаю, как работает shared_mutex в 17-ом стандарте или в boostТакая ситуация: несколько читателей одновременно захватывают этот мьютекс,...

305
Подсчет числа записей в бинарном файле

Подсчет числа записей в бинарном файле

Подскажите ,пожалуйста,в чем ошибка

316