C++中读入一行字符

来源:互联网 发布:怎么看我的淘宝店铺 编辑:程序博客网 时间:2024/05/16 14:14

头文件<fstream>, 最好不要用 fstream.h. 我在写程序的时候,发现用后者会出现不理想的输出,具体原因不清楚,大概是C++标准的问题。

 

 Solution1:

    e.g.1

         char str[90];
        infile>>str;
         outfile<<str<<endl;
        infile>>str;
         outfile<<str<<endl;
        infile>>str;
        outfile<<str<<endl;

   输入文件infile格式:

        ****************kusdafi********************

        **************hlkafshd*********************

        ***********hkalsf**8

  输出文件outfile格式:(保持与infile一致)

        ****************kusdafi********************

        **************hlkafshd*********************

        ***********hkalsf**8

  程序解释:定义str[90],通过infile>>str;可以读入一行字符,只要这行字符的数目小于89(最后一个位置要存放结束符‘/0’),都可以读入,并且通过outfile<<str<<endl;输出倒输出文件中。

  缺点:当这一行字符中有空格的时候,infile>>str 只能读到空格的时候结束

  当有空格的时候程序效果: 输入文件格式

                  1234  5678

                  9001  90002

            则对应输出文件格式:

                  1234

                  5678

                  9001  

 

Solution2:

  优点:getline语句可以读入一行,不管带不带空格。

  e.g.

          char starSingnalTemp1[81];
          char starSingnalTemp2[81];
          char starSingnalTemp3[81];

          infile.getline(starSingnalTemp1,81,'/n');

         infile.getline(starSingnalTemp2,81,'/n');
         infile.getline(starSingnalTemp3,81,'/n');

         outfile.write(starSingnalTemp1,80);

          outfile<<endl;
         outfile.write(starSingnalTemp2,80);

         outfile<<endl;
        outfile.write(starSingnalTemp3,80);
         outfile<<endl;

         outfile<<"0 1 0"<<endl;

 解释:

 infile.getline(starSingnalTemp1,81,'/n');

 读入一行字符,当遇到'/n'(回车符)的时候,结束读入操作。字符个数最多80个(不包括字符串

结束符'/0'),第81位保存结束符。在这里,这句话等价于infile.getline(starSingnalTemp1,81);

如果写成infile.getline(starSingnalTemp1,80);而文件中的一行恰好为80个字符的时候,函数会报错,存储空间少了一位。  

 outfile.write(starSingnalTemp1,80);

将数组中存放的钱80个字符写入输出文件,注意这80个字符是不包含结束符'/0'的计数,如果字符串第

80位是结束符,那么应该写成outfile.write(starSingnalTemp1,79);  

当红色的语句 outfile<<endl;没有写入的时候,输入输出效果:

    输入文件:

          1234 5678

          1256 7890

          1122

     输出文件:数据都放在一行上面

          1234 5678 口口口口口口口口……1256 7890口口口口口口…… 1122口口口口口口……0 1 0

当红色的语句 outfile<<endl;写入的时候,输入输出效果:

     输入文件:

          1234 5678

          1256 7890

          1122

     输出文件:

          1234 5678

          1256 7890

          1122

          0 1 0

原创粉丝点击