【fstream】对文件的操作(补充cin,cin.get(),cin.getline(),getline())

  • Post author:
  • Post category:其他


最近,要去航盛电子面试了,水平比较低啊,临时抱抱佛脚吧。。。

考点:考察对文件的读写以及修改等操作,虽然不难,但是我不会。。。

文件的输出操做

#include <fstream>
int main()
{
    std::ofstream cout;         //输出流对象 cout
    cout.open("text.txt");      //打开text.txt
    cout << "Hello,C++";        //写入
    cout.close();               //关闭
    return 0;
}

读取文件中的数据

#include <iostream>
#include <fstream>
int main()
{
    std::ifstream fin;
    fin.open("test.txt");
    char temp[100];
    fin >> temp;
    std::cout << temp << std::endl;
    return 0;  
}

重点:如何读取空格和空格后面的字符,如何读取换行符和换行符后面的字

在这里我们首先要分析一下常用的读取函数吧

std::cin (忽略空格,回车)

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

下面两种情况下会停止并输出:

(1)遇到空格或者‘\0’

(2)遇到换行符

这就意味着空格后面的我们都读不到,局限很大

cin.get() == getchar() (读取回车,空格)

**(1)ch = cin.get()

(2)cin.get(a, 20); //a为数组名,20为接收数字大小**

下面以getchar()说明!

int getchar(void)

返回值可为字符,也可以为ASCII码

当程序调用getchar时候,程序就等着用户按键。用户输入的字符被存放在键盘缓冲区中。直到用户按下回车(回车字符也被放在缓冲区)。getchar开始从stdio流中每次读入一个字符。

注意注意啦!!!如果我们输入了不止一个字符,那么剩余的字符就会被放在缓冲区里,等待下一个getchar();且下面直接就会读取,不需要我们按下回车!

不过,从这个特性来看,getchar()作为输入不太好用

最重要的作用,略带看不见的字符!!!

下面就是经典的getchar()输入用法:

(c = getchar() )!= ‘\n’

#include <iostream>
int main()
{
    char a ;

    while ((a = std::cin.get()) != '\n')
    {
        std::cout << a;
    }
    return 0;  
}

cin.getline()

做多可接收3个参数

cin.getline(字符串数组名,大小,截止字符)

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

getline() //string类的输入

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

和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流

上面我们所讲的某些方法,在文件流中也有对应的使用

int main()
{
    std::ifstream fin;
    fin.open("test.txt");
    char temp[100];
    fin.getline(temp, 100, 0);  //0 为空字符(空格不是空字符)
    std::cout << temp << std::endl;
    return 0;
}



版权声明:本文为yxy654538632原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。