LINUX.ORG.RU

временные обьекты


0

0

Kто скажет почему эта дрянь не компилируется, и чем принципиально отличается комбинация строк 10 и 11 от строки 13?
1#include <iostream>
2#include <cstdlib>
3#include <strstream>
4#include <string>
5using namespace std;
6int main(int argc, char *argv[])
7{
8 char s[]="this is a sample useless string";
9 char word[120];
10 istrstream is (s,5);
11 is>>word;//works till now ,
12 //but the following does not
13 istrstream (s+1,5)>>word;
14 //-do something with word
15 istrstream (s+2,5)>>word;
16 //-do something with word
17 istrstream (s+5,5)>>word;
18 //-do something with word
19 return 0;
22}

compiling zz.cpp (g++)
*compiling -fPIC (g++)
zz.cpp: In function `int main(int, char**)':
zz.cpp:13: error: no match for 'operator>>' in 'istrstream(((&s) + 1), 5) >> word'
30*/usr/include/c++/3.3.2/bits/istream.tcc:86: error: candidates are: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>&(*)(std::basic_istream<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>]
std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_ios<_CharT, _Traits>&(*)(std::basic_ios<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>]
..........................

★★

ЗЫ: не предлагайте перейти на istringstream из-за устарелости istrstream. Это не меняет сути дела.
ЗЗЫ: можно сделать поинтер на истрстреам и делать циклы new/delete до опупения, но это тоже не интересно

phrm ★★
() автор топика

у меня все компилируется. gcc 2.96

anonymous
()

Дык он же пишет тебе: не может понять, что есть твой istrstream(...) -- basic_istream либо basic_ios. Вот делать что... Может, явное приведение поставить?

С уважением -- Смоляное Чучелко

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.