• C++ getline、get和put函数


     getline函数

    这个函数我们之前就有使用过:由于流提取运算符(>>)会以空白符分割,所以我们的输入中无法包含空格。而使用getline函数可以指定分隔符,这样就可以读入包含空格的文本了(如:New York)。关于getline函数,可以回顾博客C++字符串最后的部分。

    getline函数定义在头文件<iostream>中。

    当时我们写的是

    getline(cin, city, '
    ');

    这句话的意思是,从标准输入(键盘)读入到字符串city中,并使用换行作为分隔符。

    这里我们规范一下getline函数的语法:

    getline(ifstream& input, string s, char delimitChar)
    //input是输入的对象,可以是一个文件,也可以是标准输入(cin)
    //s是接受字符串,所读取的信息存储在s中
    //delimitChar是分隔符,默认是空白符

    当函数读到分隔符或文件末尾时,就会停止。

    get函数和put函数

    get函数会从输入对象读取一个字符,而put函数会向输出对象写入一个字符。

    get函数有两个版本:

    char get()
    ifstream* get(char& ch)

    第一个版本返回从输入对象读取的一个字符。

    第二个版本则将字符存在字符ch中,并返回输入对象的引用。

    put函数只有一个版本:

    void put(char ch)

    它将指定的字符写入输出对象。

    下面我们给出一个例子,用于一个文件复制为另一个文件:

    #include <iostream>
    #include <string>
    #include <fstream>
    
    using namespace std;
    
    int main()
    {
        cout << "输入要复制的文件名:";
        string inputFileName;
        cin >> inputFileName;
    
        cout << "输入复制后的文件名:";
        string outputFileName;
        cin >> outputFileName;
    
        ifstream input(inputFileName.c_str());
        ofstream output(outputFileName.c_str());
    
        if(input.fail()){
            cout << "文件不存在!" << endl;
            return -1;
        }
    
        char ch = input.get();
        while(!input.eof()){
            output.put(ch);
            ch = input.get();
        }
    
        input.close();
        output.close();
    
        cout << "复制完成" << endl;
        return 0;
    }

    运行结果:

     

  • 相关阅读:
    简道云--编辑应用入门
    虚拟机迁移
    KVM虚拟化网络管理(一)
    keepalived概述
    kvm虚拟化存储管理
    免密登录gitlab
    KVM虚拟化介绍
    Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站
    Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署动态网站
    Jenkins凭证介绍
  • 原文地址:https://www.cnblogs.com/bwjblogs/p/12900056.html
Copyright © 2020-2023  润新知