zoukankan      html  css  js  c++  java
  • C++输入输出操作

      • 1.  C++保留C的输入输出单个字符的函数

          (1)  putchar(c)  —— 字符输出

           例程:

        #include<iostream>

         using namespace std;

         int main()

         {

            char a,b,c;

            a='B'; b='O';c='Y';

            putchar(a); putchar(b); putchar(c);putchar('/n');

            putchar(66);putchar(79);putchar(89);putchar(10);    //10是换行的ASCII码

            return 0;

         }

          (2) getchar()  ——字符输入函数

          例程:

          #include<iostream>

          using namespace std;

         int main()

         {

           char c;

           c=getchar();

           putchar(c+32);   //转化为小写字母,大小写之间包括[ / ] ^ - 、6个字符,因此不加26加32。'A'=65

           putchar('/n');

           return  0;

         }

          也可用cout来输出: cout<<(c=getchar()+32);

        2. scanf()、printf()函数的输入和输出

            scanf(格式控制,输出表列);

            printf(格式控制,输出表列);

          例程:

           #include<iostream>

          using namespace std;

         int main()

         {

             int a;

             float b;

             char c;

             scanf("%d % c % f", &a,&c,&b);

             printf("a=%d, b=%f, c=%c /n",a,b,c);

             return 0;

        }

        3. 标准输入输出流cin、cout

           包括头文件#include<iostream>

           输入输出流的控制符要加入头文件 #include<iomanip>

           cout<<"dec:"<<dec<<a<<endl;    //以十进制的形式输出整数

           cout.put(97);  //显示a字符--使用cout的成员函数put(c)

            cin成员函数get()

            (1)  不带参数的

               char c=cin.get();  //用cin的成员函数get()从键盘读入一个字符到c中去

            (2)  带一个参数的

               cin.get(ch); //从输入的流中接受一个字符,并赋给字符变量ch

            (3) 带三个参数的

               cin.get(字符数组,字符的个数n,终止字符)

               例程:

              #include<iostream>

              using namespace std;

              int main()

             {

                  char ch[20];

                  cout<<"in put a string:"<<endl;

                  cin.get(ch,10,'/n');  /*取得输入流的前10-1=9个字符赋值给ch数组的前9个元素,并规定换行符为为输入流的终止结束符*/

                  cout<<ch<<endl;

                 return 0;

             }

            如输入:1 2 34567890   //按换行键终止流输入

            则输出:1 2 34567         //只读得前9个送入ch数组中

            cin的成员函数getline()  ——从输入流中读入一行字符

               cin.getline(字符数组(或字符指针),字符的个数n,终止字符)

             例程:

              #include<iostream>

              using namespace std;

              int main()

             {

                 char ch[20];

                 cout<<"input a string:"<<endl;

                cin>>ch;

                cout<<"The string read with cin is:"<<ch<<endl;

                cin.getline(ch,20,'/');      //读取19个字符到ch数组或遇到'/'结束

                cout<<"The second part is:"<<ch<<endl;

                cin.getline(ch,20);          //读取19个字符到ch数组或遇到'/n'结束,遇到'/'仍作为字符读入

                cout<<"The third part is:"<<ch<<endl;

                return 0;

             }

             istream类的其他的成员函数如:eof(),在输入流中读取数据,如果到达末尾(遇到文件结束符),则eof()返回真,否则为假.

               例程:

               #include<iostream>

               using namespace std;

              int main()

              {

                  char c;

                  while(!cin.eof())            //若未遇到文件结束符

                        if((c=cin,get())!=' ')  //检查读入的字符是否为空格字符

                            cout.put(c);

                  return 0;

              }

        4. 磁盘文件的打开和关闭

             打开

             ofstream outfile;

              if(outfile.open("f1.data",ios::app)==0)    // 打开

                    cout<<"打开失败!";

                 ……………………

              outfile.close();                                          //关闭 

        5. 文件写入

        #include <fstream>
        #include 
        <iostream> 

        #include <string>        //一定不能少了,否则报错 error C2679
        using namespace std;

        int main()

        {
           string str;
           ofstream 
        out("d.txt",ios::out);       //等价于ofstream out("d.txt")   

           if(!out)              //若打开失败,out返回0值

          {

              cerr<<"打开失败!"<<endl;

              exit(0);

           }
           str
        ="床前明月光/n疑是地上霜/n举头望明月/n低头思故乡/n";
           out<<str<<endl;
           return 0;   
        }

        6. 读文件到控制台

        #include <fstream>
        #include <iostream> 
        #include<string>
        using namespace std;
        int main()

        {
            ifstream infile("d://new//d.txt",ios::in); //定义输入文件的流对象,以输入方式打开磁盘文件d.txt,第二个参数可去
           if(!infile)
            {
                cerr<<"打开失败!"<<endl;
                exit(1);
            }
           for(string str;getline(infile,str);)  //逐行打开并逐行显示,因此在循环中实现
             cout<<str<<"/n";
             infile.close();
          return 0;    
        }

              或把    for(string str;getline(in,str);)
                        cout<<str<<"/n";

         两句改为   string str;
                        while(getline(in,str))
                               cout<<str<<"/n";

        7. 文件复制

        #include <fstream>
        #include <iostream> 
        #include <string>
        using namespace std;
        int main() 
        {
          ifstream in("d.txt");
          if(!in)
          {
             cerr<<"打开源文件失败!"<<endl;
             exit(1);
          }
          ofstream out("b.txt");
          if(!out)
          {
             cerr<<"打开目的文件失败!"<<endl;
             exit(1);
          }
          for(string str;getline(in,str);)
          out<<str<<endl;                   //注意是out
          cout<<"文件复制成功!"<<endl;

          in.close();

          out.close();
          return 0;    
        }

         
        8. 自定义一个文件读入的函数 void display( char *filename)

        #include <fstream>
        #include <iostream> 
        #include <string>
        using namespace std;
        void display(char *filename)
        {
            ifstream infile(filename,ios::in);
            if(!infile)
           {
              cerr<<"打开失败!"<<endl;
              exit(1);
           }
           char ch;
           while(infile.get(ch))
           cout.put(ch);
           cout<<endl;
           infile.close();
        }

        int main() 
        {
          display("d.txt");
          return 0;    
        }

         

        9.关于文件读写的综合应用

        #include<fstream>
        #include<iostream>
        using namespace std;

        //从键盘读入字母并存入文件“d.txt”中
        void save_to_file()
        {
          ofstream ofile("d.txt");
          if(!ofile)
          {
           cerr<<"打开失败d.txt!"<<endl;
           exit(1);
          }
          char c[80];
          cin.getline(c,80);         //从键盘逐个读入一行字符
          for(int i=0;c[i]!=0;i++)   //对字符逐个处理,知道遇到'/n'结束
           if(c[i]>=65 && c[i]<=90||c[i]>=97 && c[i]<=122)
           {
            ofile.put(c[i]);   //将字母存入磁盘文件d.txt
            cout<<c[i];
           }
           cout<<endl;
           ofile.close();
        }

        //将"d.txt"中的字母转化为大写字母并存入"out.txt"中
        void get_from_file()
        {
           char ch;
           ifstream infile("d.txt");
           if(!infile)
           {
            cerr<<"打开失败d.txt!"<<endl;
            exit(1);
           }
           ofstream outfile("out.txt");
           if(!infile)
          {
           cerr<<"打开失败out.txt!"<<endl;
           exit(1);
          }

          while(infile.get(ch))  //逐个读入字符成功后执行下面的语句
          {
           if(ch>=97 &&ch<=122)
           ch=ch-32;
           outfile.put(ch);
           cout<<ch;
          }
          cout<<endl;
          infile.close();
          outfile.close();
        }

        int main()
        {
          save_to_file();
          get_from_file();
          return 0;
        }

        =========================== C/C++的字符或字符数组的读入函数总结=====================

        1、cin
        1、cin.get()
        2、cin.getline()
        3、getline()
        4、gets()
        5、getchar()

        1、cin>>         

        用法1:最基本,也是最常用的用法,输入一个数字:

        #include <iostream>
        using namespace std;
        main ()
        {
        int a,b;
        cin>>a>>b;
        cout<<a+b<<endl;
        }

        输入:2[回车]3[回车]
        输出:5

        用法2:接受一个字符串,遇“空格”、“TAB”、“回车”都结束

        #include <iostream>
        using namespace std;
        main ()
        {
        char a[20];
        cin>>a;
        cout<<a<<endl;
        }

        输入:jkljkljkl
        输出:jkljkljkl

        输入:jkljkl jkljkl       //遇空格结束
        输出:jkljkl

        2、cin.get()

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

        #include <iostream>
        using namespace std;
        main ()
        {
        char ch;
        ch=cin.get();               //或者cin.get(ch);
        cout<<ch<<endl;
        }

        输入:jljkljkl
        输出:j

        用法2:cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格

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

        输入:jkl jkl jkl
        输出:jkl jkl jkl

        输入:abcdeabcdeabcdeabcdeabcde (输入25个字符)
        输出:abcdeabcdeabcdeabcd              (接收19个字符+1个'/0')

        3、cin.getline()   // 接受一个字符串,可以接收空格并输出

        getline 会将换行符替换为空字符

        #include <iostream>
        using namespace std;
        main ()
        {
        char m[20];
        cin.getline(m,5);
        cout<<m<<endl;
        }

        输入:jkljkljkl
        输出:jklj

        接受5个字符到m中,其中最后一个为'/0',所以只看到4个字符输出;

        如果把5改成20:
        输入:jkljkljkl
        输出:jkljkljkl

        输入:jklf fjlsjf fjsdklf
        输出:jklf fjlsjf fjsdklf

        //延伸:
        //cin.getline()实际上有三个参数,cin.getline(接受字符串的看哦那间m,接受个数5,结束字符)
        //当第三个参数省略时,系统默认为'/0'
        //如果将例子中cin.getline()改为cin.getline(m,5,'a');当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk

        当用在多维数组中的时候,也可以用cin.getline(m[i],20)之类的用法:

        #include<iostream>
        #include<string>
        using namespace std;

        main ()
        {
        char m[3][20];
        for(int i=0;i<3;i++)
        {
        cout<<"/n请输入第"<<i+1<<"个字符串:"<<endl;
        cin.getline(m[i],20);
        }

        cout<<endl;
        for(int j=0;j<3;j++)
        cout<<"输出m["<<j<<"]的值:"<<m[j]<<endl;

        }

        请输入第1个字符串:
        kskr1

        请输入第2个字符串:
        kskr2

        请输入第3个字符串:
        kskr3

        输出m[0]的值:kskr1
        输出m[1]的值:kskr2
        输出m[2]的值:kskr3

        4、getline()     // 接受一个字符串,可以接收空格并输出,需包含“#include<string>”

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

        输入:jkljkljkl
        输出:jkljkljkl

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

        和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数

        5、gets()        // 接受一个字符串,可以接收空格并输出,需包含“#include<string>”

        #include<iostream>
        #include<string>
        using namespace std;
        main ()
        {
        char m[20];
        gets(m);                       //不能写成m=gets();
        cout<<m<<endl;
        }

        输入:jkljkljkl
        输出:jkljkljkl

        输入:jkl jkl jkl
        输出:jkl jkl jkl

        类似cin.getline()里面的一个例子,gets()同样可以用在多维数组里面:

        #include<iostream>
        #include<string>
        using namespace std;

        main ()
        {
        char m[3][20];
        for(int i=0;i<3;i++)
        {
        cout<<"/n请输入第"<<i+1<<"个字符串:"<<endl;
        gets(m[i]);
        }

        cout<<endl;
        for(int j=0;j<3;j++)
        cout<<"输出m["<<j<<"]的值:"<<m[j]<<endl;

        }

        请输入第1个字符串:
        kskr1

        请输入第2个字符串:
        kskr2

        请输入第3个字符串:
        kskr3

        输出m[0]的值:kskr1
        输出m[1]的值:kskr2
        输出m[2]的值:kskr3

        自我感觉gets()和cin.getline()的用法很类似,只不过cin.getline()多一个参数罢了;

        这里顺带说明一下,对于本文中的这个kskr1,kskr2,kskr3的例子,对于cin>>也可以适用,原因是这里输入的没有空格,如果输入了空格,比如“ks kr jkl[回车]”那么cin就会已经接收到3个字符串,“ks,kr,jkl”;再如“kskr 1[回车]kskr 2[回车]”,那么则接收“kskr,1,kskr”;这不是我们所要的结果!而cin.getline()和gets()因为可以接收空格,所以不会产生这个错误;

        6、getchar()   //接受一个字符,需包含“#include<string>”

        #include<iostream>
        #include<string>
        using namespace std;
        main ()
        {
        char ch;
        ch=getchar();                        //不能写成getchar(ch);
        cout<<ch<<endl;
        }

        输入:jkljkljkl
        输出:j

        //getchar()是C语言的函数,C++也可以兼容,但是尽量不用或少用;

        总结:

        1.读入一行

        gets(char a[]);               //接受一行,遇回车结束

                 gets(m[i])     //可用于多维数组中

        cin.get(char a[],int 5,'/n') //将字符数组a的前5个字符读入,遇到换行符结束;比如:a bc12ds,将会读入4个字符 a bc,外加一个'/0';

                                                // 一般第三个参数不写,默认为'/0'

                 eg:

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

          

        2.读入一个字符

        getchar()   //接受一个字符,需包含“#include<string>”

               char ch =getchar();

        cin.get(char c) 或者 cin.get()

              char ch=cin.get();  或者cin.get(ch)

                      getline()和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数

        cin.getline(char a[],int 5,'/n') //将字符数组a的前5个字符读入,遇换行符结束;如:a bc12ds,将会读入4个字符 a bc,外加一个'/0';

                                                // 一般第三个参数不写,默认为'/0'

                 cin.getline(m[i],20) //可用于多维数组中

        getline()     // 接受一个字符串,可以接收空格并输出,需包含“#include<string>"

         

     
  • 相关阅读:
    CSS浏览器兼容----IE的定制CSS样式
    CSS浏览器兼容---判断IE版本的HTM语句
    单链表操作1
    数学建模1
    浏览器内核学习笔记二
    浏览器内核学习笔记一
    网页使用特殊字体
    SQL Server 2008 R2没有卸载干净
    RadioButtonFor绑定值
    SVN 服务启动报错 0x8007042a
  • 原文地址:https://www.cnblogs.com/wizzhangquan/p/2913057.html
Copyright © 2011-2022 走看看