當前位置:編程學習大全網 - 源碼下載 - c++ getline函數

c++ getline函數

這是vc6.0的bug,可以通過修改string文件來改正

該string文件的位置:Microsoft Visual Studio\VC98\Include\string(註意:是string文件而不是string.h文件),

這是geiline函數在string文件中的代碼,通過該代碼妳可以知道問什麽會出現該Bug

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();//註釋掉該行

_I.rdbuf()->sbumpc();//添加該行

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); }

  • 上一篇:電腦桌面主題怎麽下載使用
  • 下一篇:開源精粹(二)!22個實用、有趣的開源項目
  • copyright 2024編程學習大全網