cin用法介绍(特别是学习了cin.clear和cin.sync)

C++与G++编译器对于cin.sync()的不同表现 期中考的牢骚最近快要期中考了,台湾这边大学的期中考试不同于大陆。我记得,在北京读了两年书,考过期中考的只有高数、大物和英语,成绩占期末总评的10%。 那在这边呢,几乎每一门课都是有期中考的,并且,会在期末总评中占有30%左右的成绩(视不同课程而定)。 所以,意味着期中考试也是不能放松的,因此最近几天就进入了考试周状态。忘了说,前几天和学长学姐聊天得知,这边的期末也不像大陆会有两周专门拿来考试,而 阅读详情
 
2008年06月04日 星期三 下午 01:11

第一次搞cin,真是搞昏人了,现在逐渐开始明白是什么东东,一起探讨一下吧!
首先大家要知道cin是怎么一回事,为什么要有?

在C中,输入输出要用printf和scanf,这是2个很麻烦的东西,因为在输入数据的同时还要说明数据的类型,如果输入数据较多,那就很麻烦了,所以我们的C++搞了两个更爽的东西cout和cin,来替换它们.首先我们先了解一下这两个东西的来处,它们是来自C++的一个类库叫 " iostream".
iostream是由istream(输入类)和ostream(输出类)派生.所以在iostream中就有了输入和输出的相关对象:
1,cin,表示标准输入(standard input)的istream类对象.cin使我们可以从设备读取数据.
2,cout,表示标准输出(standard output)的ostream类对象.cout使我们可以向设备输出或者写数据.
3,cerr(暂时还没试过,先别理吧)
暂时先介绍那么多,这里我主要想说的是cin.get()和cin.getline(),cin.clear(),cin.sync()等的用法.

首先看看cin.get(),它是一个读取单个字符的方法.

字符变量=cin.get();相当于cin.get(字符变量);

#include <iostream>
using namespace std;

int main()
{
        char cstr;
         cstr=cin.get();          //读取单个字符,在屏幕输入,也相当于cin.get(cstr);
         cout<<cstr<<endl;  //输出刚刚载入的单个字符
        system("pause");
}

运行程序后,一切正常:
输入:a    输出:a

但当我们输入的不只一个英文字符时,那又会如何呢?
输入:abcd         输出:a

由此可知,它只能读取第一个字符,但如果我们把程序修改成:

int main()
{
        char cstr;
        char bstr;

         cstr=cin.get();        //读取单个字符,在屏幕输入
        
bstr=cin.get();  
         cout<<cstr<<bstr<<endl;  //输出刚刚载入的单个字符
        system("pause");
}

我们再输入:abcd    最后输出了:ab
既然cin.get()是读取第一个字符,那bstr为什么不也是a呢?
其实原理是这样的:
在cin这个对象里,有一个储存字符的流,可以想象成缓冲区,但事实上是cin里封装的一个东西.当我们在程序上输入字符后,对象cin获得了我们输入的字符,例如获得abcd,然后再通过.get()把流里面的第一个字符去掉,赋给cstr,这时,cin里储存的流的数据为bcd,而cstr则获得了a.当我们再次运行bstr=cin.get();时,同理把cin里流的数据的b拿出来给了bstr,此后,cin里面的流的数据为cd,而bstr则为b,所以最后输出时,便能输出ab了.

还有个补充,究竟什么时候才输入数据呢?我们可以再通过上面的代码进行尝试,我们输入单个字母'a',然后按回车,发现并没有输出数据,而是再等待一次输入数据,我们再输入字母'b',按回车后便输出ab了.相信到这里,大家都应该明白了,因为当我们第一次输入a后,通过cstr=cin.get();使cin里的流没有数据,清空了.所以到第二次要再赋给bstr值时,它找不到数据,要重新再输入数据.由此来看可以知道,当cin里的流数据清空时,便需要重新输入才能赋值.而cin.get()还有个用法:

int main()
{
        char cstr;
        char bstr;

         cstr=cin.get();        //读取单个字符,在屏幕输入
        cin.get();
        
bstr=cin.get();  
         cout<<cstr<<bstr<<endl;  //输出刚刚载入的单个字符
        system("pause");
}

程序中有3个cin.get(),所以我们尝试输入:abc.   发现输出了:ac
由此能知道,当空回调cin.get();时,cin.get便自动在cin中的流数据中删除一个字母,起了一个删除作用.

对cin.get()有了一定了解之后,对cin.getline()的学习就可以更快了,原理是一致的,但是cin.getline()则是获取一整行文本.以下是cin.getline()原形:
getline(char *line,int size,char='/n')
第一个就是字符指针,第二个是字符长度,第三个1行的结束标识符.

int main()
{
        char cstr[200];
        
cin.getline(cstr,sizeof(str));     //第三个参数不输入,默认回车为结束标识符
         cout<<cstr<<endl;                //输出
        system("pause");
}

这样我们输入一堆英文或数字,然后按回车,就会输出一行刚刚输出的东西了.接下来.我们讨论第三个参数的作用.

int main()
{
        char cstr[200];
        
cin.getline(cstr,sizeof(str),'X');     //我们以单个英文字母'X'作为终止标识符
         cout<<cstr<<endl;                     //输出
        system("pause");
}

当我们输入一大堆东西,例如
输入: kkkkkkk(回车)              输出: kkkkkkk(回车)                        
           bbbbbbb(回车)                     bbbbbbb(回车)       
           lllllX                                          lllll

这样X便成了终止符,其原理和cin.get一样.或许我们可以像cin.get那样尝试一下:

int main()
{
        char cstr[200];
        char bstr[200];

        
cin.getline(cstr,sizeof(str),'X');     //我们以单个英文字母'X'作为终止标识符
        
cin.getline(bstr,sizeof(btr),'a');
         cout<<"第一行是:"<<cstr<<endl;                     //输出
        cout<<"第二行是:"<<bstr<<endl;  
        system("pause");
}

我们输入:kkkkkkkkk(回车)                                        输出:第一行是:kkkkkkkkk(回车)
                 oooooooooX(回车)                                                              ooooooooo(回车)
                 bbbbbbbbba(回车)                                                第二行是:(回车)
                                                                                                               bbbbbbbbb

在这里,我在不厌其烦地说一下原理,如果刚刚cin.get()原理看懂的可以跳过.
首先,我们第一次getline会把X前面的字符赋给cstr,然后从cin里的数据流删除,标识符X也删除了,所以输出的cstr如上所示.当我们第二次运行getline时,此时cin里的数据流为(回车)bbbbbbbbba,回车也是一个字符,事实上在数据流里用"/n"表示,接着就按照原来第一次的方法,把标识符'a'前面的字符赋给bstr,然后再删除字符号及标识符.所以输出结果如上.

接下来我们谈谈cin.clear的作用,第一次看到这东西,很多人以为就是清空cin里面的数据流,而实际上却与此相差很远,首先我们看看以下代码:

#include <iostream>
using namespace std;

int main()
{
        int a;
        cin>>a;
        cout<<cin.rdstate()<<endl;
        if(cin.rdstate() == ios::goodbit)
{
cout<<"输入数据的类型正确,无错误!"<<endl;
             }
        if(cin.rdstate() == ios_base::failbit)
        {
                cout<<"输入数据类型错误,非致命错误,可清除输入缓冲区挽回!"<<endl;
        }
        system("pause");
}

我们定义要输入到的变量是整型,但如果我们输入了英文字母或者汉字,那就会发生错误,cin里有个方法能检测这个错误,就是cin.rdstate();
当cin.rdstate()返回0(即ios::goodbit)时表示无错误,可以继续输入或者操作,若返回4则发生非致命错误即ios::failbit,则不能继续输入或操作.而cin.clear则可以控制我们此时cin里对这个问题的一个标识.语发如下:
cin.clear(标识符);
标识符号为:

  • goodbit 无错误
  • Eofbit 已到达文件尾
  • failbit 非致命的输入/输出错误,可挽回
  • badbit 致命的输入/输出错误,无法挽回
    若在输入输出类里.需要加ios::标识符号

    通过cin.clear,我们能确认它的内部标识符,如果输入错误则能重新输入.结合真正的清空数据流方法cin.sync(),请看下例:

    #include <iostream>
    using namespace std;

    int main()
    {
            int a;
            while(1)
            {
                    cin>>a;
                    if(!cin)            //条件可改写为cin.fail()
                    {
                            cout<<"输入有错!请重新输入"<<endl;
                            cin.clear();
                             cin.sync();   //清空流
                    }
                    else
                    {
                            cout<<a;
                            break;
                    }
            }
            system("pause");
    }

    上面的cin默认参数为0,即无错误,正常操作.当我们输入英文字母'k'时,它的状态标识改为fail(即1),即错误,用cout对用户输出信息,再用cin.clear让错误标识改回为0,让我们可以继续输入,再清空流数据继续输入.如果我们没有了cin.clear,则会进入死循环,其过程为我们输入了英文字母,它的状态标识便为fail,当运行到条件判断时,便总是回到错误的条件表示里,并且我们再也没办法输入,因为错误的表示关闭了cin,所以会进入死循环.

---------------------------------------------------------------------

自己再添加一句:如果输入错误,则再也输入不进去,须用clear.而sync用于清除当前输入缓冲区中的内容。

#include <iostream>

int main()
{
 using namespace std;
   
 int a;
 cin >> a;
 cout << a <<endl;
 cin >> a ;
 cout <<a <<endl;
 cin.clear();
 cin.sync();  // 可以将cin.clear();cin.sync();  不同时注释掉试一下就知道了
 cin >> a;
 cout <<a <<endl;

return 0;

}

COMSOL 6.4安装全攻略:安装包获取、许可证配置与避坑指南 多物理场仿真是现代工程与科研中不可或缺的技术手段,其核心原理在于将电磁、结构、流体、传热等不同物理过程的耦合效应置于统一环境中求解,从而真实模拟复杂系统行为。这类仿真平台能大幅提升产品研发与设计验证效率,广泛应用于电子散热、声学分析、电力设备等领域。在部署最新版本仿真软件时,安装与许可证配置往往成为影响工作效率的关键环节。本文系统梳理COMSOL 6.4在Windows平台的安装全流程,涵盖安装包获取、系统依赖准备、许可证配置、常见报错排查等实用经验,帮助工程师与科研人员一次性完成环境搭建,把更多时间投入真 阅读详情

相关推荐

基于强化学习方法的PID参数整定

前言 PID控制器在工业界应用非常广泛,但是PID的参数调节一般需要人工根据经验法来试。对于有经验的工程师来说,一般试几次就可以获得满足调节的参数。然而对于新手工程师却很难确定一套比较好的参数。 这里我们采用强化学习的方法来调节PID参数。 这个例子展示了如何使用双延迟深度确定性策略梯度(TD3:twin-delayed deep deterministic policy gradient)强化学习算法来调整PI控制器。整定控制器的性能与使用Control System Tuner app整定的控制器的性能

weixin_42188287的博客 2万+

C++中cin的详细用法

一,cin等的简介 1cin等属于istream流类的对象,默认对应标准输出设备,一般认为是键盘。(流在这里的意思可以粗略的理解为数据的流动(输入输出)); 2.cout是ostream流的对象,默认对应标准输出流设备,一般认为是显示器。 后面为较为特殊的输出,我们一般不需要了解过于深刻。 3.cerr是ostream 类的对象。默认对应标准输出流设备,一般认为是显示器。而且是非缓冲输出。可以理解为出现程序错误的时候,会直接把错误信息输出到显示器。 4.clog是ostream 类的对象。默认对应

xiaziqiqi的博客 2万+

复用浏览器之跳过扫码登录

复用浏览器 1、通过命令启动浏览器:chrome --remote-debugging-port=9222(前提是退出所有的chrome浏览器) 2、启动浏览器之后,在地址栏输入127.0.01:9222,成功复用如下图所示:

qq_43911915的博客 2033

iostream 缓冲区详解(cin和cout)

缓冲区缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。 缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。缓冲区的类型 缓冲区 分为三种类型:全缓冲、行缓冲和不带缓冲。  1、全缓冲   在这种情况下,当填满标准I/O缓存后才进行实际I/O操作。全缓冲的典型代表是对磁盘文件的

我的大学 7959

LLM and Embedding区别

LLM(大语言模型)和 Embedding(嵌入)是自然语言处理(NLP)中的两个核心概念,它们的核心区别在于。Embedding 计算向量。

u010674101的专栏 1874

【思考模型框架】采用双钻模型:发散(桌面研究/用户访谈)→收敛(需求归类/优先级排序),输出需求规格书、追踪矩阵及产品待办清单。

设计思维双钻模型是一种以用户为中心的需求管理方法,通过"发散-收敛"的双循环确保问题定位准确、方案切实可行。第一钻石(探索→定义)聚焦"找对问题",运用用户访谈、田野调查等方法挖掘真实需求;第二钻石(开发→交付)解决"做对方案",通过原型测试、A/B测试验证可行性。该模型强调低保真验证、多团队协作和真实用户测试,避免资源浪费与伪需求开发。典型应用场景包括产品功能优化、用户体验提升等需要精准落地的需求场景。核心价值在于建立从用户痛点到解决方案的可控闭

奶爸的编程之路,也就一周冷个三天 319

【C++】浅论(cin和cout)的解锁、缓冲区的理解、C&C++输入方法汇总和详解

首先在C语言中scanf用来格式化读取各种基本数据(但是遇到空比字符则视为读入的终止标志而停止,所以不可用来读取带有空格的字符串)getchar()和fgets()用来读取字符(可读白字符:如空格、换行),区别仅在于getchar()默认是stdin输入流,不用显示传参在读取字符串时(C语言格式的字符数组char []),使用fgets读入,其会读取到换行符\0便终止读取,并把\0算入字符串的一个字符加入到字符串末尾,并且自动在字符串末尾加上\0。在C++中cin可以用来读取各种基本数据,和。

Yaoyao2024的博客 3610

笔试题-2023-思特威-数字电路设计(CIS)【纯净题目版】

10 笔试题-2023-思特威-数字电路设计(CIS)【纯净题目版】

w0shishabi的博客 1472

关于cin,getline一起出现无法正常输入的问题

int N; char c; int num=0; string s; cin>>N>>c; getline(cin,s,'\n'); for(int i=0; s[i]!='\0';i++) { num++; } cout<<num...

weixin_33895657的博客 895

戴尔PowerEdge R740服务器安装Debian系统后无法显示磁盘阵列

【代码】戴尔PowerEdge R740服务器安装Debian系统后无法显示磁盘阵列。

路~可以走过 1898

基于 InceptionNeXt 模块增强的 YOLOv8 模型:针对多尺度目标检测的改进与实现

modules.py。

know_F0727的博客 204

cin.clear()及相关用法

1. cin.clear() 是用来更改cin的状态标示符的。 cin.sync()是用来清除缓存区的数据流的。 如果标示符没有改变那么即使清除了数据流也无法输入。所以两个要联合起来使用。 我们定义要输入到的变量是整型,但如果我们输入了英文字母或者汉字,那就会发生错误,cin里有个方法能检测这个错误,就是cin.rdstate(); 当cin.rdstate()返回0(即ios::goodbit)...

CY05627的博客 3713

华为OD机试 - 战士技能规划设计 - 数组(Python/JS/C/C++ 新系统 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。你为一款动作游戏设计战士角色的技能:战士每个技能会消耗不同能量,释放技能有 2 个约束:连续释放技能数量不能超过 m 个,技能能量总和不能超过能量上限 k;如果超过则必须中断当前技能,进入调息状态(即分段)。战士有一项爆发技巧:在单次战斗中有一次

学Java,找哪吒 227

缓冲区及流状态、cin.sync()、cin.clear()、cin.ignore()

1、输出缓冲区 每一个IO对象都管理一个缓冲区,输入时先把内容输入到缓冲区中,当缓冲区被刷新时将内容写入到真是的输出设备或者文件,缓冲区被刷新有以下几种情况: 1、程序正常结束,作为main函数返回的一部分,将清空所有的缓冲区 2、在一些不确定的情况下缓冲区可能已经满了,因此在写下一个值之前会对缓存区进行刷新 3、用操纵符显示的进行刷新: endl:刷新流,输出内容换行 flush:刷

jessica 3710

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

cin的用法及清空输入缓冲区问题

问题描述:编程时遇到一个问题

zhao708981169的专栏 2万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

清理cin输入缓冲区_cin的用法及清空输入缓冲区问题

问题描述:输入数据时希望有个合法性检验的问题,如果输入的数据不合法则程序提示重新输入。最初代码如下:#include #include using std::cin ;using std::cout ;using std::endl;using std::vector ;int main(){int num;vector ivec;do{cout<while(cin>>num)i...

weixin_39828859的博客 1770

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

cin.clear()与cin.sync()与cin.ignore()

阅读程序一与程序二: 一: #include using namespace std; int main() {  int a;  cout  cin>>a;                //int型变量中放了char型数据,failbit置1  cout  //cin.clear();  //cin.sync();  cout   //由于failbit值为1,输入

windlfb的专栏 640

cin的特殊用法

cin的特殊用法

Mr'bian 441

清理cin输入缓冲区_[转]cin的用法及清空输入缓冲区问题

问题描述:输入数据时希望有个合法性检验的问题,如果输入的数据不合法则程序提示重新输入。最初代码如下:#include#include using std::cin ;using std::cout ;using std::endl;using std::vector ;int main(){int num;vector ivec;do{cout<numbers:"<while(cin&...

weixin_39808803的博客 439

由一个一个题目联系到cin的用法

问题描述:输入数据时希望有个合法性检验的问题,如果输入的数据不合法则程序提示重新输入。最初代码如下: #include <iostream>#include <vector>using std::cin ;using std::cout ;using std::endl;using std::vector ;int main(){int num;vector&l...

diantai2158的博客 114

【C++】第5章:(五)字符串和字符数组 (包含cin和cin.getline混合使用输入时要清除缓冲区数据)

文章目录一.字符变量与字符串二.字符串与一维字符数组三.字符数组的输入混合使用cin和cin.getline四.字符数组的输出 一.字符变量与字符串 char a=‘M’; char b[ ]=“M”; char c[ ]="爱“; sizeof(a) = 1 sizeof(b) = 2 sizeof( c) = 3 sizeof() 用来求所占字节数 以上表明: 字符变量只能存放一个字节的字符...

vichin_0215 1431

C++中使用循环while(cin >> x)带来的问题以及解决方法

C++中使用循环while(cin >> x)带来的问题以及解决方法 前言 我们有时候写程序,需要对一个数据结构循环输入数据类型。比如: int data[1024]; 现在我们想用while循环来对data进行赋值,输入q或其他英文字母结束输入 int _data; int i = 0; while (cin >> _data) data[i++] = _data; ...

weixin_43669969的博客 6428
上一篇: C++的iostream标准库介绍
下一篇: 数据指针、函数指针、成员函数指针
SearchLife
博客等级 码龄20年 51粉丝 22原创
评论 16
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值