`
蒙面考拉
  • 浏览: 160276 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

C++的输入输出流及文件操作

 
阅读更多

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

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

   例程:

#include

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

  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

  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

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

   cout<<"dec:"<

   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

      using namespace std;

      int main()

     {

          char ch[20];

          cout<<"in put a string:"<

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

          cout<

         return 0;

     }

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

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

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

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

     例程:

      #include

      using namespace std;

      int main()

     {

         char ch[20];

         cout<<"input a string:"<

        cin>>ch;

        cout<<"The string read with cin is:"<

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

        cout<<"The second part is:"<

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

        cout<<"The third part is:"<

        return 0;

     }

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

       例程:

       #include

       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
#include

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

int main()

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

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

  {

      cerr<<"打开失败!"<

      exit(0);

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

6. 读文件到控制台

#include
#include
#include
using namespace std;
int main()

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

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

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

7. 文件复制

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

  in.close();

  out.close();
  return 0;   
}

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

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

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

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

#include
#include
using namespace std;

//从键盘读入字母并存入文件“d.txt”中
void save_to_file()
{
  ofstream ofile("d.txt");
  if(!ofile)
  {
   cerr<<"打开失败d.txt!"<   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<   }
   cout<   ofile.close();
}

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

  while(infile.get(ch))  //逐个读入字符成功后执行下面的语句
  {
   if(ch>=97 &&ch<=122)
   ch=ch-32;
   outfile.put(ch);
   cout<  }
  cout<  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
using namespace std;
main ()
{
int a,b;
cin>>a>>b;
cout<}

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

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

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

输入:jkljkljkl
输出:jkljkljkl

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

2、cin.get()

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

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

输入:jljkljkl
输出:j

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

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

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

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

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

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

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

输入: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
#include
using namespace std;

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

cout<for(int j=0;j<3;j++)
cout<<"输出m["<

}

请输入第1个字符串:
kskr1

请输入第2个字符串:
kskr2

请输入第3个字符串:
kskr3

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

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

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

输入:jkljkljkl
输出:jkljkljkl

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

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

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

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

输入:jkljkljkl
输出:jkljkljkl

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

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

#include
#include
using namespace std;

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

cout<for(int j=0;j<3;j++)
cout<<"输出m["<

}

请输入第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”

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

输入: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
#include
using namespace std;
main ()
{
string str;
getline(cin,str);
cout<}

2.读入一个字符

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

       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"

分享到:
评论

相关推荐

    c++输入输出流及文件操作详解.pdf

    c++输入输出流及文件操作详解.pdf

    C++输入输出流案例

    本文详细介绍了C++输入输出流的概念、类别、对象和常用操作,通过实例代码和图书管理系统的综合案例,巩固文件操作。 一、输入流 C++中输入流主要有三种:cin、getline和get。cin是 istream 类的对象,用于处理...

    C++输入输出流实验

    总的来说,这个实验涵盖了C++输入输出流的基本用法,包括标准输入输出流的读写操作,以及文件输入输出流的创建、读取和追加。通过这三个实验任务,学生可以掌握输入输出流的核心概念,了解如何处理格式化输出,以及...

    C++输入输出流详解

    本篇文章将详细介绍 C++ 中的输入输出流,包括常用的输出流和输入流类,以及如何使用这些类进行文件的读写操作。 #### 二、输出流 在 C++ 中,最重要的三个输出流类分别是 `ostream`、`ofstream` 和 `...

    C++ 输入输出流及本地化

    在提供的文件名列表中,看到的".pdg"文件可能是某种特定格式的数据文件,但没有明确的上下文,因此无法提供与C++输入输出流及本地化直接相关的详细信息。不过,理解上述C++的输入输出流和本地化概念,将有助于处理...

    C++输入输出流及本地化

    C++输入输出流是C++标准库中的一个关键特性,它提供了一种高效且灵活的方式来处理数据的输入和输出操作。这一特性使得程序员能够轻松地与屏幕、文件、网络等不同来源进行数据交互。在C++中,输入输出流主要通过`...

    c++输入输出流及本地化

    **C++输入输出流** C++中的输入输出流库,也称为iostream库,提供了一种面向对象的方式来处理数据的读写。核心类包括`std::cin`(标准输入流)、`std::cout`(标准输出流)和`std::cerr`(错误输出流)。这些类使得...

    C++程序设计上机题目 标准输入输出流及ASCII文件

    在C++编程中,标准输入输出流是程序与操作系统交互的基础,它们允许程序接收用户输入并展示输出结果。本文将详细讲解如何使用标准输入输出流对象,并探讨如何处理ASCII文件,特别是通过文件流进行操作。 一、标准...

    C++中输入输出流及文件流操作总结

    C++中的输入输出流是程序与外部世界交互的重要方式,主要涉及iostream库,包括标准输入输出流、文件流等操作。这些操作使得开发者能够方便地处理数据的输入和输出。 首先,`iomanip`头文件提供了格式化I/O的支持,...

    C++ 输入输出流

    C++ 输入输出 标准输出流 标准输入流 文件操作与文件流 字符串流

    C++标准输入输出流

    C++标准输入输出流是C++语言中数据输入和输出的基础部分,包括标准输入设备键盘、标准输出设备显示器、外存磁盘上的文件和内存中指定的字符串存储空间等几个方面。C++语言系统为实现数据的输入和输出定义了一个庞大...

    C++面向对象程序设计-输入输出流实验报告.docx

    总的来说,这个实验旨在加深对C++面向对象编程和输入输出流的理解,特别是文件操作方面,这是任何软件开发中常见的任务。通过实践,学生将学会如何有效地处理和管理程序中的数据输入和输出,这对于构建复杂系统至关...

    C++输入输出流.pdf

    在给定的文件《C++输入输出流.pdf》中,特别提到了如何通过实例分析来深入理解C++中的输入输出流,以及如何通过运算符重载来扩展输入输出流的功能。 C++标准库提供了输入输出流的基类,比如istream类和ostream类,...

    标准C++输入输出流及本地化

    在C++编程中,输入输出流(Input/Output Stream)是处理数据输入和输出的核心机制。标准C++库提供了一套强大的I/O流系统,它允许程序员以一种面向对象的方式处理输入和输出操作,极大地提高了代码的可读性和可维护性...

    C++程序设计基础PPT课件10-输入输出流

    在C++编程语言中,输入输出流(Input/Output Stream,简称I/O流)是处理数据传输的关键概念,尤其在程序与外部设备如显示器、键盘、文件等进行交互时。本节将深入讲解C++程序设计基础中的输入输出流,包括流类、流...

    C++输入输出流

    总的来说,C++的输入输出流系统是一个强大且灵活的工具,能够处理各种类型的输入输出操作,从简单的标准I/O到复杂的文件处理和格式化输出。理解和熟练使用这个系统是成为精通C++开发者的必备技能。

Global site tag (gtag.js) - Google Analytics