| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
还是cin.getline好In Reply To:Re:关于getline函数的使用问题 Posted by:xfxyjwf at 2005-05-28 12:44:34 > template<class _E, class _Tr, class _A> inline
> basic_istream<_E, _Tr>& __cdecl getline(basic_istream<_E, _Tr>& _I,
> basic_string<_E, _Tr, _A>& _X, const _E _D)
> {typedef basic_istream<_E, _Tr> _Myis;
> ios_base::iostate _St = ios_base::goodbit;
> bool _Chg = false;
> _X.erase();
> const _Myis::sentry _Ok(_I, true);
> if (_Ok)
> {_TRY_IO_BEGIN
> _Tr::int_type _C = _I.rdbuf()->sgetc();
> for (; ; _C = _I.rdbuf()->snextc())
> if (_Tr::eq_int_type(_Tr::eof(), _C))
> {_St |= ios_base::eofbit;
> break; }
> else if (_Tr::eq((_E)_C, _D))
> {_Chg = true;
> _I.rdbuf()->snextc();
> /*
> 关键是这个东西用的不好.
> snextc:Advances the get pointer, then returns the next character.
> 本来应该是下面这个:
> stossc:Moves the get pointer forward one position, but does not return a character.
> */
> break; }
> else if (_X.max_size() <= _X.size())
> {_St |= ios_base::failbit;
> break; }
> else
> _X += _Tr::to_char_type(_C), _Chg = true;
> _CATCH_IO_(_I); }
> if (!_Chg)
> _St |= ios_base::failbit;
> _I.setstate(_St);
> return (_I); }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator