getline

zxjluohe 2011-11-24 07:24:39
#include<iostream>
#include<string>
#include<fstream>
using namespace std;

int main()
{
string name="aaaaa";
char fullname[10]="bbbbb";
cout<<name<<endl;
cout<<fullname<<endl;
// getline(cin,name);
// cout<<name;
ifstream is("test4.txt",ios::in);

is.getline(fullname,20); //
getline(is,name);
cout<<name<<endl;
cout<<fullname<<endl;
return 0;
}

请大侠讲一下这两个getline,我在vc6.0上运行,总会有一个不能读取?
...全文
155 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qwer_boo 2011-11-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xingfeng2510 的回复:]

VC++6.0编译器getline函数存在bug,在读到限定符后还要读取额外字符...
解决方法:进入X:\Program Files\Microsoft Visual Studio\VC98\Include目录(VC6.0安装的地方),用记事本打开string(注意,不是string.h),然后找到以下代码段.
else if (_Tr::eq((_E)_C,_D))
{_Chg ……
[/Quote]NB...
yuegeman 2011-11-27
  • 打赏
  • 举报
回复
test4.txt 打开失败
taodm 2011-11-25
  • 打赏
  • 举报
回复
楼主,请珍惜生命,远离VC6
xingfeng2510 2011-11-25
  • 打赏
  • 举报
回复
建议lz不要继续使用vc6.0了,转向使用vs05或vs08,getline函数存在的bug在6.0之后的版本已经修复。你可以在其他编译器下运行该程序,不会出现你说得这种情况。
xingfeng2510 2011-11-25
  • 打赏
  • 举报
回复
VC++6.0编译器getline函数存在bug,在读到限定符后还要读取额外字符...
解决方法:进入X:\Program Files\Microsoft Visual Studio\VC98\Include目录(VC6.0安装的地方),用记事本打开string(注意,不是string.h),然后找到以下代码段.
else if (_Tr::eq((_E)_C,_D))
{_Chg = true;
_I.rdbuf()->snextc(); // 把这一行注释掉,也可删掉
_I.rdbuf()->sbumpc(); //添加这一行,这行本来没有
break;
}

现状:微软已经确认这是他们产品中的'臭虫'(bug),这个bug已经在Microsoft Visual C++ .NET得到修正.
qq120848369 2011-11-25
  • 打赏
  • 举报
回复
个人认为毫无问题, 用其他编译器试试.
zxjluohe 2011-11-25
  • 打赏
  • 举报
回复
不行么?请讲一下
duke56 2011-11-24
  • 打赏
  • 举报
回复

// getline(cin,name);
// cout<<name;


is.getline(fullname,20); //
getline(is,name);

//你的IO?
zxjluohe 2011-11-24
  • 打赏
  • 举报
回复
没回都是自己顶,无奈
zxjluohe 2011-11-24
  • 打赏
  • 举报
回复
txt里存的是AAAAA...,单步的时候执行第二个getline会出错,请问为什么

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧