用了cin,程序后面就终止了,但scanf可以用?

作者&投稿:鄢泪 (若有异议请与网页底部的电邮联系)
~ `cin` 和 `scanf` 是不同语言的输入函数,分别用于 C++ 和 C 语言中。`cin` 是 C++ 中的标准输入流对象,用于从标准输入设备(通常是键盘)读取数据,而 `scanf` 则是 C 语言中的输入函数,用于从标准输入流中读取格式化的数据。
如果你在 C++ 中使用了 `cin` 函数,程序后面终止的原因可能是因为 `cin` 函数等待用户输入数据,但用户没有输入数据或者输入的数据格式不正确,导致程序一直等待下去。这种情况下,你可以在使用 `cin` 函数之前先清空输入缓冲区,例如:
#include <iostream>
#include <limits>
using namespace std;
int main() {
int x;
cout << "Please enter an integer: ";
cin >> x;
// 清空输入缓冲区
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout << "You entered: " << x << endl;
return 0;
}
在上述代码中,我们使用了 `cin.clear()` 函数来清空输入流的错误状态,使用了 `cin.ignore()` 函数来忽略输入缓冲区中的所有字符,以便下一次输入能够正常进行。
相比之下,C 语言中的 `scanf` 函数不会出现上述问题,因为它会在读取到格式化字符串中指定的数据后立即返回。但需要注意的是,`scanf` 函数可能会由于格式化字符串与输入数据不匹配而导致错误,因此在使用时需要仔细检查返回值以及输入缓冲区中的数据。


用了cin,程序后面就终止了,但scanf可以用?
如果你在 C++ 中使用了 `cin` 函数,程序后面终止的原因可能是因为 `cin` 函数等待用户输入数据,但用户没有输入数据或者输入的数据格式不正确,导致程序一直等待下去。这种情况下,你可以在使用 `cin` 函数之前先清空输入缓冲区,例如:include <iostream> include <limits> using namespace std;int m...

c++里在程序最后加一句cin.get(),那么输入的字符去哪了呢?储存在哪里...
存储在流中,流都是自带缓存区的,不过因为这是程序最后一句,所以执行完成后,流对象应该销毁了吧,很抱歉,我不能确认这件事(我不清楚是不是有流对象池的概念,但是程序结束,缓冲区应该肯定清空的,只是对象是否销毁不能确认,对于其缓冲区,我觉得应该是和vector的内存分配机制一致),没能找到相应...

编写的C++程序 结尾加了 cin.get()还是会闪退,求问为什么,并且想知道...
cin.get(ch),每次都有一个读一个字符,进行处理,你最后一个'#'后面实际上传递了一个'#'和一个'\\n'到缓冲区,你一个cin.get()只能吸收最后一个'\\n',也就是说,你这里再加一个cin.get()就可以了。一般vc的话,用楼下有人说的那个system("pause");来暂停程序以显示结果。在codeblocks...

C++ Cin输入字母后 程序立刻结束 怎么办??
你定义的a是整形,你输入字符当然退出 你可以改成:int age;char name,country;cout <<...cin >> age;cin >>name;cin >>country;

C++ cin的用法
int num_input;cin >> num_input;while(cin.fail()){ cin.clear();cin.ignore();cout << "输入错误,请重新输入"<<endl;cin >> num_input;}

c++里 比如我定义了个char 的 c 用cin输入 然后输出的是什么???_百度...
--- LZ你把输入过程理解错了。虽然char只能保存一个字符,但这段程序是每用cin输入一个字符到char以后就用vector<char> c的push_back成员函数把char里的字符再插入到c的末尾,通过循环可以重复这个过程若干次,也就是多次输入并插入一个字符。而vector<char>相当于能够随着插入char而自动增长长度char数...

c 中cin是什么意思
在 C 语言中,cin 是一种输入流,用于从用户输入的控制台或终端中读取数据。使用 cin 可以方便地获取数据,并将其存储在程序的变量中进行处理。cin 的使用需要通过头文件 进行声明,在程序中可以通过下面的语句进行调用:cin >> variable;其中 variable 表示需要存储输入数据的变量名称。cin 的输入机制...

C语言cin函数的返回值是什么啊?
cin是C++的标准输入流,其本身是一个对象,并不存在返回值的概念。不过经常会有类似于 while(cin>>a)的调用,这里并不是cin的返回值,而是>>操作重载函数istream& operator>>(istream&, T &);的返回值,其中第二个参数由cin>>后续参数类型决定。其返回值类型为istream&类型,大多数情况下其返回...

怎么在 cin后面输入字符串。
C++的输出和输入是用“流”(stream)的方式实现的。图3.2和图3.3表示C++通过流进行输入输出的过程。1. cout语句的一般格式为:cout<<表达式1<<表达式2<<……<<表达式n;2. cin语句的一般格式为:cin>>变量1>>变量2>>……>>变量n;

c语言cin什么意思
cin>>a代表获取键盘输入的值赋值给变量a,将cin>>a置于while的循环条件内即while(cin>>a),将会一直测试输入流是否正常。如果输入流正常,就会继续循环获取键盘值,如果输入流错误,或者达到文件末尾(在windows下Ctrl+Z,在Linux下Ctrl+D),该循环就会终止。测试代码如下:include<iostream> using name...

康马县13196737710: 在c++中 当main函数中包含了cin>> ,在return语句前面加入cin.get(),为什么程序运行完就会自动结束 -
谯冯圣诺: 可能输入流错误,再加个cin.clear();或多加几个cin.get();应该可以.

康马县13196737710: C++ Cin输入字母后 程序立刻结束 怎么办?? -
谯冯圣诺: cin>>a; 程序预期输入的是数字,你输入非法字符后,cin这个对象就失效了,在以后的输入语句中也就不会再阻塞等待输入了.修正如下: int age; char name[32]; string country; do{ coutcout.flush(); cin.clear(); cin>>age; }while (cin.fail()); coutcin>>name; coutcin>>country; coutcoutcout

康马县13196737710: 在visual studio 2010中c++输入到cin.get(就自动关闭了,以前没事的 加入 system("pause"); 就没事! -
谯冯圣诺: 你以前是用VC6的吧.在VS的控制台应用程序中,main函数运行到return就会自动关闭了.而system(“pause”)调用了cmd的pause命令,用于暂停中断cmd窗口的一次状态,由于控制台程序都是靠cmd运行的,所以可以达到暂停的效果.这里面cin.get会造成停止可能是由于吸收了上一次命令的回车符导致的,你试试写两条cin.get应该就没事了.//------------------- 那就不知道了,把写了pause的运行结果截图看一下

康马县13196737710: 请教一下,这个程序没有报错,但是运行的时候会停止工作 -
谯冯圣诺: 因为你这段代码里面有两句是数组越界访问:cin>>name[n]; cin>>subject[s]; 数组是从0下标开始的,最后一个元素下标分别是n-1和s-1.数组越界访问没有编译错误,但程序运行时会崩溃.

康马县13196737710: 为什么getline在cin前面可以用但是到了cin后面就会直接跳过 -
谯冯圣诺: c++ 的 getline 函数 不太好用. cout << "x y name ..." <<endl; // 输出提示 cin >> x >> y; // 输入数据 getline(cin,TheName); // 如果 拍入 的 x y 后面 有 换行 再字符串,getline 会读入 换行,没读到别的 // 如果 拍入 的 x y 后面 没有 换行,getline 会读入后面一串东西.

康马县13196737710: c++中读取文本时,为何用cin输入了以后,getline不能读取下一行. -
谯冯圣诺: cin读取的内容不包括/r,空格等字符,而getline不同,它接收所有的内容,包括回车,所以用cin输入后,还剩余有回车,会被getline接收,因此出现你说的那些内容.

康马县13196737710: C++ 为什么运行后直接就结束了 -
谯冯圣诺: 因为程序运行完了就直接返回了,你可以在return前可以加上诸如int i;cin>>i;或者加上system("pause");...

康马县13196737710: c++编程中有时为什么scanf能输入而cin则直接跳出程序哈!
谯冯圣诺: cin是个输入流,先调用cin 对象的SetWide()设置字符宽度,cin>>b就ok了;

康马县13196737710: cin输入ctrl+z后不能使用cin -
谯冯圣诺: 我试了一下好像是有这个问题 我的猜测是: ctrl+z在C++中表示输入终止 也就是当你输入ctrl+z时也就是告诉程序你以后都不需要再输入数据了 那么输入流就不可用了 cin自然也就没法用了 我曾经也碰到过一个情况 不知道对你有没有帮助 我想让程序在我输入'\n'时中止输入 结果无论我怎么做 使用while(cin>>k) 在循环中都不可能输入'\n'中止 当时头痛了两天 后来偶然想起可以用getline()函数 嘿嘿 然后就搞定了 getline()不会中止输入流 之后还可以用cin输入数据

康马县13196737710: cin输入中,EOF没有退出循环,直接退出了程序 -
谯冯圣诺: 是退出循环的啊1 Ctrl+Z(回车) vector<string> svec; string word; while(cin>>word) svec.push_back(word); getchar(); getchar(); 这样试试看吧.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网