AKB Forums

Go Back   AKB Forums > Technical sections > Languages, Compilers and Interpreters
Home Register Blogs FAQ Members List Calendar Downloads Arcade Mark Forums Read

Languages, Compilers and Interpreters C,C++,C#,.NET,Java,PHP,Perl,SQL and more

Troubles when posting message? Click here! :: Проблемы с отправлением сообщения? Нажмите сюда!

Reply
 
LinkBack Thread Tools Display Modes
Old Aug 12, 2002, 03:22   #1
The Reloaded
 
Aram Hambardzumyan's Avatar
 
Join Date: Jan 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,178
Rep Power: 7
Reputation: 45
Post getline function

ну почему getline(basic_string<...>&, basic_istream<...>&, E delim) выкидывает delim, не добавляя его в выходной ресультат?!? и есть ли стандартная функция с добавлением? а то я уже сижу, алгоритмы с итераторами копаю в этом направлении...
Aram Hambardzumyan is offline   Reply With Quote Quote selected
Old Aug 12, 2002, 20:20   #2
Guru Apprentice
 
Join Date: Feb 2002
Location: /dev/null
Posts: 524
Rep Power: 7
Reputation: 10
Send a message via ICQ to Ektich Send a message via Yahoo to Ektich
Post

? а ты разве не знаешь кто твой delim когда вызываешь функцию? сам добавляй трудно что-ли?
__________________
\/\/h47'5 1n 4 n4m3? 7h47 wh1(h w3 (4|| 4 r053,
8y 4ny 07h3r n4m3 w0u|d 5m3|| 45 5w337...
Ektich is offline   Reply With Quote Quote selected
Old Aug 12, 2002, 20:33   #3
Administrator
 
greka's Avatar
 
Join Date: Sep 2001
Location: @work
Posts: 5,347
Rep Power: 10
Reputation: 23
Send a message via ICQ to greka
Post

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

а если у тебя несколько делим-ов - который нужно в результат кидать ?
лол
__________________
И повешенные могут качаться в неположенную сторону. /С.Е.Лец/
greka is offline   Reply With Quote Quote selected
Old Aug 12, 2002, 22:18   #4
The Reloaded
 
Aram Hambardzumyan's Avatar
 
Join Date: Jan 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,178
Rep Power: 7
Reputation: 45
Post

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

2 greco:
а это смотря как к этому понятию подходить. не сосредотачиваясь на различных подходах, скажу только, что данная реализация вообще теряет разделитель - не только не добавляет к строке, но и из потока изымает. из-за чего приходится затрачивать дополнительные усилия по отлову разделителя.
а несколько делимов на одной позиции быть не может, один да всретится первым, лишив второго его очереди. не виу здесь никакой проблемы.
Aram Hambardzumyan is offline   Reply With Quote Quote selected
Old Aug 12, 2002, 22:29   #5
Administrator
 
greka's Avatar
 
Join Date: Sep 2001
Location: @work
Posts: 5,347
Rep Power: 10
Reputation: 23
Send a message via ICQ to greka
Post

ты просто не понял моего вопроса - я говорил о множестве делимов - когда оное состоит из нескольких элементов...
ну да неважно.
__________________
И повешенные могут качаться в неположенную сторону. /С.Е.Лец/
greka is offline   Reply With Quote Quote selected
Old Aug 12, 2002, 22:51   #6
The Reloaded
 
Aram Hambardzumyan's Avatar
 
Join Date: Jan 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,178
Rep Power: 7
Reputation: 45
Post

Quote:
Originally posted by Greco El:
ты просто не понял моего вопроса - я говорил о множестве делимов - когда оное состоит из нескольких элементов...
а, ну это уже выходит за рамки возможностей getline
Aram Hambardzumyan is offline   Reply With Quote Quote selected
Old Aug 13, 2002, 02:48   #7
The Reloaded
 
Aram Hambardzumyan's Avatar
 
Join Date: Jan 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,178
Rep Power: 7
Reputation: 45
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++ оказываются еще и весьма красивыми не забывайте об этом!
Aram Hambardzumyan is offline   Reply With Quote Quote selected
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT. The time now is 17:55.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
This board was founded on September 29, 2001
Powered by Viper Internet

Affordable Web Hosting | ParevNet

Buy text link