c++输入_c++输入输出 - CSDN
精华内容
参与话题
  • C++输入

    2016-07-19 16:46:17
    一、C++中的输入方法 1、cin: 当碰到空格或换行符'\n'时,输入结束: char a[10],b[10]; cout cin>>a>>b; cout 输出结果为: Enter some input: 12 34 56 1234END  2、cin.getline: 当碰到换行符'\n'或达到所...

    一、C++中的输入方法

    1、cin:

    当碰到空格或换行符'\n'时,输入结束:

    char a[10],b[10];

    cout<<"Enter some input:\n";

    cin>>a>>b;

    cout<<a<<b<<"End\n";

    输出结果为:

    Enter some input:

    12 34 56

    1234END

     2、cin.getline:

    当碰到换行符'\n'或达到所能接受的最大字符数时,输入结束:

    char a[10];

    cout<<"Enter some input:\n";

    cin.getline(a,5);

    cout<<a<<b<<"End\n";

    输出结果为:

    Enter some input:

    123456

    1234END

    需要注意的是,a读入了4个字符,不是5个,是因为'\0'占了一位

     3、cin.get:

    可以读入任何字符,包括空格和'\n':

    cout<<"Enter some input:\n";

    char a,b,c;

    cin.get(a);cin.get(b);cin.get(c);

    cout<<a<<b<<c<<"End\n";

    输出结果为:

    Enter some input:

    AB

    CD

    那么a的值为'A',b的值为'B',c的值为'\n\

    注意:

        在使用get时,必须考虑空格和换行符的处理: 

    int n;char c;

    cout<<"Enter a number:\n";

    cin>>n;

    cout<<"Now enter a letter:\n";

    cin.get(c);

    输出结果为:

    Enter a number:

    10

    Now enter a letter

    n的值顺利读入10,但c的值为'\n',因为读入数字10后,输入流中下一个被读取的字符是'\n'

    二、如何在键盘中产生EOF用以结束输入

    1、通过判断输入是否等于EOF,可以结束输入。

    EOF 是个宏,其意思是:End Of File,文件尾标志。 从数值上来看,就是整数-1。

    在C语言的头文件中对其进行了宏定义:

    libio.h:    # define EOF (-1)

    当读文件操作时,遇到文件结束位置或读数据出错均会返回 EOF。 (C语言中所有的输入输出操作均是按读文件的思想来设计的,或者说,是文件操作的一种特例,如getchar()就是fgetc(stdin) 的一个宏 )。int getchar() ; //从标准输入缓冲区读取一个字符,成功返回该字符的ASCII值,出错,返回EOF。

    如何在键盘输入时,产生EOF呢? 不同的系统方法不同:

    linux系统下,在输入回车换行后的空行位置,按 ctrl+d (先按ctrl键,不放,再按d键);

    windows系统下,在输入回车换行后的空行位置,按 ctrl+z,再回车确认。

    2、以下代码供参考:

    #include <stdio.h>
    void main()
    {
        int ch;
        do {
            ch=getchar();
            printf("ch=%d\n", ch ); //输出读返回的ch值,读到EOF会输出-1
        } while ( ch!=EOF );
    }
    展开全文
  • C++各种输入

    千次阅读 2018-07-23 12:54:07
    说明:这个是单字符的输入,用途是输入一个字符,把它的ASCALL码存入到a中 处理方法:与cin不同,cin.get() 在缓冲区遇到[enter],[space],[tab]不会作为舍弃,而是继续留在缓冲区中 (2)2个参数 用法:cin....

    1.cin.get()基本用法

    (1)1个参数

    用法:a = cin.get() 或者 cin.get(a)

    结束条件:输入字符足够后回车

    说明:这个是单字符的输入,用途是输入一个字符,把它的ASCALL码存入到a中

    处理方法:与cin不同,cin.get() 在缓冲区遇到[enter],[space],[tab]不会作为舍弃,而是继续留在缓冲区中

    (2)2个参数

    用法:cin.get(arrayname,size) 把字符输入到arrayname中,长度不超过size

    注释:arrayname必须是char[]类型,即char数组类型,不可以为string类型;size是指输入长度,即允许输入的最大长度。

    处理方法:假设把数据输入到 char a[arraylength],数组长度为arraylength。cin.get(a,size)—size,arraylength不同可以分为四类:

    类1:输入串长arraylength,会自动扩张arrayname大小,使能保存所有数据

    例1:char a[10];cin,get(a,20);

    输入:123456789012[enter]

    输出a数组:123456789012 可以发现,输入12个字符到a[10]中,系统自动扩充a[10],此时实际数组长为13(‘123456789012’\0’’)。但当计算sizeof(a)时,还是现实为10

    类2:输入串长

    例2:char a[10];cin.get(a,20);

    输入:12345[enter]

    输出:12345,此时数组内数据为‘12345‘\0’’

    类3:输入串长>size,先截取size个字符,若还是大于arraylength,则输入前arraylength-1个字符,最后补充‘\0’

    例3:char a[5];cin,get(a,10);

    输入:123456789012[enter]

    输出:123456789 先截取了9个字符变成‘123456789‘/0‘’,然后放入到a中,a自动扩张长度

    类4:输入串长>size,先截取size个字符,若小于arraylength,则把截取串放入数组中,最后补充‘\0’

    例4:char a[15],cin.get(a,10)

    输入:123456789012[enter]

    输出:123456789 此时数组内为‘123456789‘\0’’ 注意:前size-1有效,最后一个补‘\0’

    综上:当吧大于数组长度的字符串放出char a[arraylength]中,系统自动扩张数组a的长度使a能放得下,但是这么做容易产生运行错误。

    (3)3个参数

    用法:cin.get(arrayname,size,s) 把数据输入到arrayname字符数组中,当到达长度size时结束或者遇到字符s时结束

    注释:a必须是字符数组,即char a[]l类型,不可为string类型;size为最大的输入长度;s为控制,遇到s则当前输入结束缓存区里的s将被舍弃。

    2.cin.getline()基本用法
    cin.getline() 的用法和 cin.get() 用法大致相同,没有一参数用法,只有二参数,三参数两类

    cin.gerline( arrayname, size )

    cin.getline( arrayname, size, s )

    用法与 cin.get() 效果大致相同,但也有些区别

    (1)cin.getline(arrayname,size)与cin.get(arrayname,size)的区别

    cin.get(arrayname,size)当遇到[enter]时会结束目前输入,他不会删除缓冲区中的[enter]

    cin.getline(arrayname,size)当遇到[enter]时会结束当前输入,但是会删除缓冲区中的[enter]

    #include  <iostream>
    using namespace std;  
    
    int main()  
    {  
        char a[10];char b;  
            cin.get(a,10);  
        cin.get(b);  
        cout<<a<<endl<<int(b);  
    }  

    输入:12345[enter]

    输出:12345 【换行】 10

    说明:cin.get(a,10)把12345到a中,遇到[enter]结束,但是不把[enter]删除,则把[enter]输入到b中,(enter的ASCALL码为10)

    include  <iostream>
    using namespace std;  
    
    int main()  
    {  
        char a[10];char b;  
            cin.getline(a,10);  
        cin.get(b);  
        cout<<a<<endl<<int(b);  
    }  

    输入:12345[enter]a[enter]

    输出:12345【换行】97

    说明:cin.getline(a,10)吧12345输入到a中,遇到{enter}结束,并把缓冲区中[enter]删除,把接下来的a输入到b中

    (2)cin.getline(arrayname,size,s)与cin.gei(arrayname,size,s)的区别
    cin.getline( arrayname , size , s ) 当遇到s时会结束输入,并把s从缓冲区中删除

    cin.get(arrayname , size , s)当遇到s时会结束输入,但不会删除缓冲区中的s。

    include <iostream>
    using namespace std;  
    
    int main()  
    {  
        char a[10];char b;  
        cin.get(a,10,',');  
        cin.get(b);  
        cout<<a<<endl<<b;  
    }  

    输入:12345,[enter]

    输出:12345【换行】,

    说明:cin,get不会删除缓冲区的,

    include <iostream>
    using namespace std;  
    
    int main()  
    {  
        char a[10];char b;  
        cin.getline(a,10,',');  
        cin.get(b);  
        cout<<a<<endl<<int(b);  
    }  

    输入:12345,[enter]

    输出:12345【换行】10

    说明:cin.getline吧12345输入到a中,遇到’,‘结束,并删除缓冲区的’,‘,后面的[enter]输入到b中

    总之,cin.get() 不删,cin.getline() 删。

    运用—以任何符号作为输入分隔符

    例题:输入五个学生的名字,每个学生的名字不超过10个字符,输入时学生名字之间用逗号隔开,把这五个名字存储并换行输出。

    include <iostream>
    using namespace std;  
    
    int main()  
    {  
        char a[5][10];  
        int i;  
        for(i=0;i<4;i )  
            cin.getline(a[i],10,',');  
        cin.getline(a[i],10);  
    
        for(i=0;i<5;i )  
            cout<<a[i]<<endl;  
    }  

    这样我们就可以完成完成用任何符号作为分割符的输入了!此处getline换成get是不行的,因为cin.get不会删除缓冲区中的分隔符’,‘ 后续输入不能继续进行。

    3、getline()
    用法:接收一个字符串,可以接收空格并输出,需包含“#include”

    include <iostream>
    inlucde <string>
    using namespace std;
    main ()
    {
    string str;
    getline(cin,str);
    cout<<str<<endl;
    }

    输入:jkljkljkl
    输出:jkljkljkl

    输入:jkl jfksldfj jklsjfl
    输出:jkl jfksldfj jklsjfl

    4、注意的问题
    1、cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数

    2、当同时使用cin>>,getline()时,需要注意的是,在cin>>输入流完成之后,getline()之前,需要通过

    str=”\n”;
    getline(cin,str);

    的方式将回车符作为输入流cin以清除缓存,如果不这样做的话,在控制台上就不会出现getline()的输入提示,而直接跳过,因为程序默认地将之前的变量作为输入流。

    看下面一段程序:

    include <iostream>
    include <string>
    include <cstdlib>
    using namespace std;
    
    int main(){
        int age;
        //standard input(cin)
        cout<<"Please enter an integer value as your age: ";
        cin>>age;
        cout<<"Your ager is: "<<age<<".\n";
        //cin and string
        string mystr;
        cout<<"What's your name? "<<endl;
       mystr="\n";//*****
        getline(cin,mystr);//*****
        getline(cin,mystr);
        cout<<"Hello,"<<mystr<<".\n";
        char sex;
        cout<<"Please enter a F or M as your sex: ";
        cin>>sex;
        cout<<"Your sex is: "<<sex<<endl;
        cout<<"What's your favorite team? ";
        mystr="\n";//****
        getline(cin,mystr);//****
        getline(cin,mystr);
        cout<<"I like "<<mystr<<".\n";
    
        system("pause");
        return 0;
    }

    运行结果为:
    这里写图片描述

    如果不添加以*注释的代码,则运行结果为:
    这里写图片描述

    参考自:http://blog.csdn.net/a1015553840/article/details/50579396

    展开全文
  • c++ 输入

    2019-03-25 13:05:00
    c++ 输入 #include <iostream> using namespace std; int main() { char name[50]; cout<< "你的名字:"; cin >> name; cout <<"您是 :"<<name<<endl...

    c++ 输入

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
       char name[50];
       cout<< "你的名字:";
       cin >> name;
       cout <<"您是 :"<<name<<endl;
    }
    
    你的名字:lg
    您是 :lg
    

    posted on 2019-03-13 18:56 luoganttcc 阅读(...) 评论(...) 编辑 收藏

    展开全文
  • C/C++文件输入输出(详细介绍)

    万次阅读 多人点赞 2020-07-30 11:37:10
    ´在头文件iostream中定义有两个流类:输入流类istream和输出流类ostream,且用这两个类定义了流对象cin和cout: ´Istream cin; ´ostream cout; ´cin是一个istream类的对象,它从标准输入设备(键盘)获取数据,...

     如果有需要请关注下面微信公众号,会有更多收获!

    ´在头文件iostream中定义两个流类:输入流类istream和输出流类ostream,且用这两个类定义了流对象cincout:

    ´Istream cin;

    ´ostream cout;

    ´cin是一个istream类的对象,它从标准输入设备(键盘)获取数据,程序中的变量通过流提取符“>>”从流中提取数据。流提取符“>>”从流中提取数据时通常跳过输人流中的空格、tab键、换行符等空白字符。注意:只有在输入完数据再按回车键后,该行数据才被键盘缓冲区,形成输入流,提取运算符“>>”才能从中提取数据。注意保证从流中读取数据能正常进行

    ´cout是一个ostream类的对象,它有一个成员运算函数operator<<,每次调用的时候就会向输出设备输出。operator用运算符重载,可以接受不同类型的数据,如整型、浮点型、字符串甚至指针,等等cout是标准输出设备,一般输出到屏幕。

    在定义流对象时,系统会在内存中开辟一段缓冲区,用来暂存输入输出流的数据

     

    C++iostreamCprintf/scanf的区别

    ´1. 类型处理更安全、智能,printf中对付intfloat等说明符比较麻烦

    ´2. 扩展性更强,iostream使用的<<>>操作符都是可重载,只要重载相关的运算符就可以

    ´ 3. 流风格的写法也比较自然简洁

    ´4. printf/scanf的速度比cin/cout

     

    几个输入函数介绍:

    ´1cin.get()

    ´ cin.get(字符变量名)可以用来接收字符

    ´cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格
    2cin.getline(接收字符串的变量,接收字符个数,结束字符)用法:接收一个字符串,可以接收空格并输出

    3getline()用法:接收一个字符串,可以接收空格并输出,需包含“#include<string>”

    ´注意:cin.getline()属于istream流,而getline()属于string流,是不一样的两个函

    文件I/O也称为读文件(输入)和写文件(输出),c++标准库中提供两个类ifstreamofstream,分别用于文件的输入和输出。

    .文件的写操作:

    写操作对应的有:<<putwrite 等,我们来看下他们分别都能实现什么样的写文件功能!

    ①、写文本类型/ASCII码类型的可见字符串:<<put

    int main(){
    
      short var = 20000;
    
      ofstream fs;
    
      fs.open("1.txt");
    
      if (!fs) return 0;
    
      fs << var << endl;
    
      fs << "文件写入" << endl;
    
      fs.put('Y');
    
      fs.close();
    
      return 0;
    
    }

    这就是写文本文件的方式,其中 << 支持的类型比较多,put 只能写单个字符到文件,还是有一定局限性的,所以 put 平时用的比较少

    参考网站:http://www.cplusplus.com/reference/ostream/ostream/operator%3C%3C/

    C/C++重定向 标准输入输出的库函数

    ´所谓重定向输出,就是可以把原本只是输出在控制台的字符,输出到你指定的路径文件中。(输入类似,就是从指定的文件中读取,而不是读取在控制台中的输入。)重定向函数可以在任何时候开启、关闭

    ´函数名:freopen 

    ´标准声明:FILE *freopen( const char *path, const char *mode, FILE *stream ); 

    ´所在文件: <stdio.h>

    参数说明: path: 文件名,用于存储输入输出的自定义文件名。 mode: 文件打开的模式。和fopen中的模式(如r, w)相同。 stream: 一个文件,通常使用标准流文件。 返回值:成功,则返回一个path所指定文件的指针;失败,返回NULL。功能:实现重定向,把预定义的标准流文件定向到由path指定的文件中。标准流文件具体是指stdinstdoutstderr。其中stdin是标准输入流,默认为键盘;stdout是标准输出流,默认为屏幕;stderr是标准错误流,一般把屏幕设为默认

     

    输入一个正整数nn<100n从文件in.txt读入),n的阶乘(答案写入文件out.txt)。

    //c++语法
    #include<iostream>
    #include<stdio.h>
    using namespace std;
    int fac(int n){
    	return (n==1)? 1:n*fac(n-1);
    }
    int main(){
    	int n,m;
    	freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取 
    	freopen("out.txt","w",stdout); //输出重定向,输出数据将保存out.txt文件中 
    	while(cin>>n){
    		//m=fac(n);
    		cout<<"输入n的阶乘为:"<<fac(n)<<endl; // 注意使用endl 
    	}
    	fclose(stdin);//关闭重定向输入
    	fclose(stdout);//关闭重定向输出 
    	return 0;
    }
    //c语法
    #include<stdio.h>
    int fac(int n){
    	return (n==1)? 1:n*fac(n-1);
    }
    int main(){
    	int n,m;
    	freopen("in2.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取 
    	freopen("out2.txt","w",stdout); //输出重定向,输出数据将保存out.txt文件中 
    	while(scanf("%d %d",&n,&m)!=EOF){
    		printf("n的阶乘为:%d\n",fac(n)); 
    	} 	
    	fclose(stdin);//关闭重定向输入
    	fclose(stdout);//关闭重定向输出 
    	return 0;
    }
    
    getline()该函数是从文件中读取一行数据,一行就是有换行符 \n,或者达到 getline 的缓冲区大小,或者读到文件末尾。
    #include <fstream>
    using namespace std;
    int main(int argc, char* argv[]){
        short var = 20000;
        ofstream fs_out;
        fs_out.open("d:\\123.txt");
        if (!fs_out) return 0;
        fs_out << var << endl;
        fs_out << var + 1 << endl;
        fs_out << var + 2 << endl;
        fs_out.close();
        ifstream fs_in;
        fs_in.open("d:\\123.txt");
        if (!fs_in) return 0;
        char sz[100] = { 0 };//缓存区
        fs_in.getline(sz, 100);
        fs_in.getline(sz, 100);
        fs_in.getline(sz, 100);
        fs_in.close();
        return 0;
    }
    
    //②、二进制类型写文件:write
    int main(){
    	short var = 20000;
    	ofstream fs;
    	fs.open("3.txt");
    	if (!fs) return 0;
    
    	fs.write((char*)&var, sizeof(var));
    	fs.close();
    	return 0;
    }
    
    //①、读文本类型/ASCII码类型的文件:>>、get、getline
    int main(){
    	short var = 20000;
    	ofstream fs_out;
    	fs_out.open("4.txt");
    	if (!fs_out) return 0;
    	fs_out << var << endl;
    	fs_out.close();
    	var = 3000;
    	ifstream fs_in;
    	fs_in.open("4.txt");
    	if (!fs_in) return 0;
    	fs_in >> var;
    	char ch = fs_in.get();
    	fs_in.close();
    	return 0;
    }

    闲鱼算法书PDF:有需要的同学可以看看:

     

    展开全文
  • C++输入输出流

    万次阅读 2020-03-07 09:23:39
    数据输入和输出过程也是数据传输的过程。数据就像流水一样从一个地方流动到另一个地方,因此,在C++中将此过程称为“流(stream)"。 在C++的标准库中,将用于进行数据输入输出的类统称为”流类“。cin是流类...
  • c++输入输出

    2019-03-17 00:31:07
    C++输入输出流是指由若干字节组成的字节序列,这些字节中的数据按顺序从一个对象传送到另一对象。流表示了信息从源到目的端的流动。在输入操作时,字节流从输入设备(如键盘、磁盘)流向内存,在输出操作时,字节...
  • c++输入

    2015-11-22 20:09:54
    char str[100]; cin.getline(str,100); cout str[0] = cin.get() 只读取一个
  • c++输入的几种方式

    千次阅读 2016-11-11 16:02:22
    因为有C语言的基础,所以刚开始感觉学起来也不是很难,大部分也都能理解,直到我遇到下面这个困惑,我才开始注意到c++中关于输入的一些问题。也许这些问题很基础,但是对于想真正学好这门语言的人来说,就必须注意...
  • C++输入字符串的几种方式

    万次阅读 多人点赞 2019-05-10 20:28:20
    最近有复习到 C++ 基础知识,这里总结下在 C++输入字符串的几种方式,有需要的可以参考: 1、cin >> void Cin1() //输入一个数字 { int a, b; cin >> a >> b; cout << "a + ...
  • C++ 输入数据方法总结

    千次阅读 2017-08-31 20:52:51
    C++ 输入方法总结
  • C++输入未知长度的数组

    万次阅读 多人点赞 2020-02-28 12:27:58
    假如要输入一组数字进行排序,但是不知道有多少个数字 静态数组int array[10],它的长度必须是个常数才可以定义。如果知道数组长度n,可以先cin>>n;然后用动态数组int* array = new int[n]。但是如果不知道...
  • C++输入回车结束输入 例如 输入一组整数 1 3 5 7 9 按回车之后 结束输入 法1:数组 int mk[100]; int i=0; while(cin &gt;&gt; mk[i]) { i++; if (cin.get() == '\n') break; } 法2:...
  • C++输入至回车结束

    千次阅读 2019-06-08 11:42:39
    之前比赛被这个小问题难住了,好坑啊。 其实很简单: while(cin>...附加:C语言遇到空格且不换行时继续输入 while((c=getchar())!='\n') { ... } -------------------------------------...
  • C++ 输入一行int数组

    万次阅读 2018-08-03 12:11:34
    C++中,关于输入一行char数组,我们可以用get()或者getline(),但这两个函数的参数却只能是字符(串)型变量,而不能是整型变量。那么如果要输入一行(未知具体有多少个变量输入)整型变量,该如何呢?可以用...
  • C++输入

    千次阅读 2019-03-03 22:11:01
    重要的输入流类 istream类最适合用于顺序文本模式输入,cin是其实例 ifstream类支持磁盘文件输入 istringstream 构造输入流对象 如果在构造函数中指定一个文件名,在构造该对象时该文件便自动打开 ifstream ...
  • C++输入多行

    千次阅读 2018-09-29 02:23:47
    c++输入多行代码,mark一下: #include &lt;iostream&gt; #include &lt;sstream&gt; using namespace std; int main() { char buffer[1001]; int line_num = 0; while (true) { cin.getline...
  • C++输入密码显示*

    千次阅读 2011-05-23 17:36:00
    // C++ 输入 密码 回显 * 的小程序段 #include #include #include using namespace std; class Password//用一个类实现,其实也可以不用这么麻烦,练习一下 { public: Password()//构造函数,这里主要...
  • C++ 输入一行数字(含负数)存入数组中 看了一些博客后发现对C++获取输入数到数组中有些运行错误,是因为没有加载C的标准库。其实以下代码使用C语言更加合理,但是C的输入输出过于繁琐,因此使用了C++来写。 代码...
  • C++ 输入一行未知个数的整数

    万次阅读 2017-08-26 16:46:47
    最近笔试的时候,编程题遇到这样要求的输入,需要输入一行整数,个数未知,然后整数之间用空格间隔
  • C++输入输出重定向

    千次阅读 2016-05-23 09:38:49
    OJ基本都是用标准输入输出(USACO除外)。但如果你在调试的时候也都是从控制台输入,那就太浪费宝贵的时间了。我们可以重定向标准输入,调试的时候从文件读,提交时从标准输入读。 在C语言中,方法比较简单。使用...
1 2 3 4 5 ... 20
收藏数 697,450
精华内容 278,980
关键字:

c++输入