Обнаружение пустой строки из текстового файла

0

У меня есть текстовый файл:

7
a

bkjb
c


dea

hash_table - это массив, в котором номер line no.-2=index of hash_table array который соответствует каждой строке, соответствует элементу в массиве. Элемент может быть пустой строкой или символом типа "a\n" который будет выглядеть в текстовом файле:

a
//empty line

Первый номер используется для определения размера массива hash_table. Оператор << не обрабатывает пустую строку или '\n' char как строку и, следовательно, не добавляет в массив. Я пробовал это, но не использовал. Вот моя попытка:

ifstream codes ("d:\\test3.txt"); //my text file

void create_table(int size, string hash_table[]) //creating array
{   string a;
    for(int i=0;i<size;i=i+1)
        {
        codes>>a;
        char c=codes.get();

        if(codes.peek()=='\n')
            {char b=codes.peek();
            a=a+string(1,b);
            }
        hash_table[i]=a;
        a.clear();
        }
}

void print(int size, string hash_table[])
{
    for(int i=0;i<size;i=i+1)
        {if(!hash_table[i].empty())
            {cout<<"hash_table["<<i<<"]="<<hash_table[i]<<endl;} 
        }
}

int main()
{
    int size;
    codes>>size;
    string hash_table[size];
    create_table(size, hash_table);
    print(size, hash_table);



}

ПРИМЕЧАНИЕ: может быть любой нет. пустых строк со случайной последовательностью.

  • 2
    std::getline и std::string::empty .
  • 0
    нет. символов в строке не зафиксированы
Показать ещё 9 комментариев
Теги:
file-io
newline

1 ответ

2
Лучший ответ

Используйте std::getline() вместо std::ifstream::operator >>(). Оператор >> пропускает пробелы, в том числе символы новой строки.

std::string line;
while (std::getline(codes, line)) {
    //...do something with line
}
  • 0
    когда это происходит, когда цикл завершается. Не следует добавлять EOF в массив.
  • 1
    @Nikhil Не будет. Это правильный способ прочитать каждую строку из файла. Если вы когда-либо проверяли eof() вы почти наверняка делаете это неправильно. Это условие прекратится, когда он попытается прочитать за последней строкой.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню