zoukankan      html  css  js  c++  java
  • ca75a_c++_标准IO库-利用流对象把文件内容读取到向量-操作文件

    /*ca75a_c++_标准IO库习题练习
    习题8.3,8.4,8.6
    习题8.9、8.10

    ifstream inFile(fileName.c_str());
    1>d:users xwtechprojectsca75aca75aca75a.cpp(28): error C2079: “inFile”使用未定义的 class“std::basic_ifstream<char,std::char_traits<char>>”
    1>d:users xwtechprojectsca75aca75aca75a.cpp(28): error C2440: “初始化”: 无法从“const _Elem *”转换为“int”

    //未包含#include <fstream>。

    调用的函数参数,能够接收基类(istream)的地方,都能够接受子类(ifstream)
    参考:
    https://blog.csdn.net/txwtech/article/details/104251103

    std::istream& get(std::istream &in)//8.3
    get函数也可以接收ifstream
    */

    while (getline(inFile, s))//一次读取一行,放在s里面

     while(inFile>>s) //>>流输入操作符,一个一个的单词读取,空格作为单词分割的标志

    inFile是流对象,inFile绑定了一个文件,把文件内容传递个s
    ————————————————

     1 /*ca75a_c++_标准IO库习题练习
     2 习题8.3,8.4,8.6
     3 习题8.9、8.10
     4 
     5 ifstream inFile(fileName.c_str());
     6 1>d:users	xwtechprojectsca75aca75aca75a.cpp(28): error C2079: “inFile”使用未定义的 class“std::basic_ifstream<char,std::char_traits<char>>”
     7 1>d:users	xwtechprojectsca75aca75aca75a.cpp(28): error C2440: “初始化”: 无法从“const _Elem *”转换为“int”
     8 
     9 //未包含#include <fstream>。
    10 
    11 调用的函数参数,能够接收基类(istream)的地方,都能够接受子类(ifstream)
    12 参考:
    13 https://blog.csdn.net/txwtech/article/details/104251103
    14 
    15 std::istream& get(std::istream &in)//8.3
    16 get函数也可以接收ifstream
    17 */
    18 #include <iostream>
    19 #include <string>
    20 //#include <istream>
    21 #include <fstream>
    22 using namespace std;
    23 
    24 #include "get.h"
    25 
    26 int main()
    27 {
    28 
    29     cout << "测试新写的函数,请输入数字,或者字母" << endl; //8.4
    30     double dval; 
    31     get(cin); //输入什么内容,显示什么内容。输入错误可以有提示
    32     
    33     cout << "继续使用cin,输入一个double: " << endl;
    34     cin >> dval;
    35     cout << "您输入的是: " << dval << endl;
    36 
    37     cout << "习题8.6" << endl;
    38 
    39     string fileName;
    40     //fileName="aa.txt";
    41     cout << "Enter file name请输入一个文件名:test.txt " << endl;
    42     cin >> fileName;
    43     ifstream inFile(fileName.c_str()); //绑定输入的文件
    44     if (!inFile)
    45     {
    46         cerr << "error:can not open input file" << fileName << endl;
    47         return -1;
    48     }
    49     get(inFile);
    50 
    51     
    52 
    53 
    54     return 0;
    55 }

    get.cpp

     1 #include "get.h"
     2 
     3 std::istream& get(std::istream &in)//8.3
     4 {
     5     int ival;
     6     while (in >> ival, !in.eof())//让in.eof()决定是否结束,ctrl+z结束输入
     7     {
     8         if (in.bad())//巨大错误
     9             throw std::runtime_error("IO stream error");
    10         if (in.fail())//判断输入类型是否相同
    11         {
    12             std::cerr << "bad data,try again." << std::endl; //std名称空间
    13             in.clear();//恢复流到正常状态
    14             in.ignore(200,'
    ');//
    15             continue;
    16         }
    17         std::cout << "输入的数据: " << ival << std::endl;
    18     }
    19     in.clear();//恢复流到正常状态
    20 }

    get.h

     1 //#pragma once
     2 #ifndef _GET_H
     3 #define _GET_H
     4 
     5 //头文件不要用using namesapce std;
     6 #include <iostream>
     7 std::istream& get(std::istream &in);
     8 
     9 
    10 #endif
    欢迎讨论,相互学习。 txwtech@163.com
  • 相关阅读:
    [Camtasia报错]An error occurred in the Recorde System Audio setup Failed
    [Oracle报错]RMAN-12005: error during channel cleanup/ORA-19550: cannot ...
    [Teamviewer报错]现在无法捕捉屏幕画面。这可能是由于快速的...
    [SVN技能]SVN服务迁移(Windows-Linux)
    [RabbitMQ技能]安装部署单节点RabbitMQ
    运算符的那些事
    java之连接数据库之JDBC访问数据库的基本操作
    面向对象编程之OC
    集合
    面向对象
  • 原文地址:https://www.cnblogs.com/txwtech/p/12296395.html
Copyright © 2011-2022 走看看