Go Back   Armenian Knowledge Base > Technical sections > Languages, Compilers, Interpreters

Reply
 
Thread Tools

getline function
Old 12.08.2002, 03:22   #1
The Reloaded
 
Aram Hambardzumyan's Avatar
 
Join Date: 01 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,387
Rep Power: 5
Post getline function

ну почему getline(basic_string<...>&, basic_istream<...>&, E delim) выкидывает delim, не добавляя его в выходной ресультат?!? и есть ли стандартная функция с добавлением? а то я уже сижу, алгоритмы с итераторами копаю в этом направлении...

Old 12.08.2002, 20:20   #2
Guru Apprentice
 
Join Date: 02 2002
Location: /dev/null
Age: 50
Posts: 524
Rep Power: 0
Post

? а ты разве не знаешь кто твой delim когда вызываешь функцию? сам добавляй трудно что-ли?

Old 12.08.2002, 20:33   #3
Академик
 
greka's Avatar
 
Join Date: 09 2001
Location: inside myself
Posts: 5,369
Rep Power: 6
Post

нафига тогда существует понятие делим, если и его в выходной результат закидывать ??

а если у тебя несколько делим-ов - который нужно в результат кидать ?
лол

Old 12.08.2002, 22:18   #4
The Reloaded
 
Aram Hambardzumyan's Avatar
 
Join Date: 01 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,387
Rep Power: 5
Post

2 ektich:
можно, но дополнительно надо проверять, не произошла ли остановка из-за eof. если в цикле, то код некрасивый получается. но видимо на этом и придется остановиться.

2 greco:
а это смотря как к этому понятию подходить. не сосредотачиваясь на различных подходах, скажу только, что данная реализация вообще теряет разделитель - не только не добавляет к строке, но и из потока изымает. из-за чего приходится затрачивать дополнительные усилия по отлову разделителя.
а несколько делимов на одной позиции быть не может, один да всретится первым, лишив второго его очереди. не виу здесь никакой проблемы.

Old 12.08.2002, 22:29   #5
Академик
 
greka's Avatar
 
Join Date: 09 2001
Location: inside myself
Posts: 5,369
Rep Power: 6
Post

ты просто не понял моего вопроса - я говорил о множестве делимов - когда оное состоит из нескольких элементов...
ну да неважно.

Old 12.08.2002, 22:51   #6
The Reloaded
 
Aram Hambardzumyan's Avatar
 
Join Date: 01 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,387
Rep Power: 5
Post

Quote:
Originally posted by Greco El:
ты просто не понял моего вопроса - я говорил о множестве делимов - когда оное состоит из нескольких элементов...
а, ну это уже выходит за рамки возможностей getline

Old 13.08.2002, 02:48   #7
The Reloaded
 
Aram Hambardzumyan's Avatar
 
Join Date: 01 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,387
Rep Power: 5
Post

(красивое) решение найдено! оказывается, getline возвращает поток, чем мы и воспользуемся:
Code:
  string s;
  while(!getline(in, s, '.').eof())
  {
    s += '.';
    // ...
  }
именно отсутсвие этого момента мне и мешало - не хотелось писать что-то вроде
Code:
  string s;
  getline(in, s, '.');
  while(!in.eof())
  {
    // ...
    getline(in, s, '.');
  }
или то же самое через for.
кроме того, конкретно моя задача решается еще проще - т. к. я потом должен делать разбор строки s, я могу действительно забывать о '.' и разбор организовывать с учетом этого момента (т. е. отсутствие точки на конце не считать ошибкой). но это уже мелочь.
всем: научно не доказано, но обычно эффективные программы на c++ оказываются еще и весьма красивыми не забывайте об этом!
Reply




Реклама:
реклама
Buy text link .

All times are GMT. The time now is 19:08.
Top

Powered by vBulletin® Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.