鱼C论坛

 找回密码
 立即注册
查看: 3649|回复: 3

cin 输入数据残留问题

[复制链接]
发表于 2013-9-26 17:20:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <iostream>
using namespace std;
int main()
{
char STRING[8];

cin.getline( STRING, 5 );  // 第一次输入 abcdefgh
cout << STRING << endl;

cin.getline( STRING, 5 );  // 不会进行第二次输入而直接结束程序
cout << STRING << endl;   // 为什么这句也不会输出?
  
system("pause");
return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-26 18:02:25 | 显示全部楼层
出错了:
cin.getline( STRING, 5 );  // 第一次输入 abcdefgh
你规定读入5个字符,但是你输入超过5-1个的字符,所以cin出错了
修改:
        if(!cin.getline( STRING, 5 ))  // 第一次输入 abcdefgh
        {
                cout << "Error\n";
                cin.clear(); //清除错误状态
        }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-27 08:33:35 | 显示全部楼层

貌似懂了一点,可是那样的话,岂不是每次输入 比如输入abc【enter】 都会执行 cout << "Error\n";
语句的啊,因为你输入之后要按下回车的,,,,,, 怎样才能完美处理cin输入问题,输入短的和长的字符串都可以作出相应的处理,,,我是初学 C++ 的,求指教
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-27 08:47:14 | 显示全部楼层
苹果沃珂 发表于 2013-9-26 18:02
出错了:
cin.getline( STRING, 5 );  // 第一次输入 abcdefgh
你规定读入5个字符,但是你输入超过5-1个 ...

我试了一下这个 好像能够实现了,但是依然有个疑问。。。
#include <iostream>

using namespace std;

int main()
{
        char STRING[8];
       
        /*
        if( !cin.getline( STRING, 5 ) );  // 第一次输入 abcdefgh
        {
                cout << "ERROR\n";
                cin.clear();   // 清除 cin 错误状态
        }
        */
        cin.getline( STRING, 5 );       
        cout << STRING << endl;
        cin.clear();
        cin.sync();
        //cin.ignore( 1024, '\n');     // 使用这个为什么和 cin.sync 的效果不一样,cin.ignore( 1024, '\n');     不能实现有些输入
               
        cin.getline( STRING, 5 );  
        cout << STRING << endl;   
          
        system("pause");
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 18:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表