ca75a_c++_标准IO库-利用流对象把文件内容读取到向量-操作文件

news/2024/11/21 1:27:33/

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

ifstream inFile(fileName.c_str());
1>d:\users\txwtech\projects\ca75a\ca75a\ca75a.cpp(28): error C2079: “inFile”使用未定义的 class“std::basic_ifstream<char,std::char_traits<char>>”
1>d:\users\txwtech\projects\ca75a\ca75a\ca75a.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

/*ca75a_c++_标准IO库习题练习
习题8.3,8.4,8.6
习题8.9、8.10ifstream inFile(fileName.c_str());
1>d:\users\txwtech\projects\ca75a\ca75a\ca75a.cpp(28): error C2079: “inFile”使用未定义的 class“std::basic_ifstream<char,std::char_traits<char>>”
1>d:\users\txwtech\projects\ca75a\ca75a\ca75a.cpp(28): error C2440: “初始化”: 无法从“const _Elem *”转换为“int”//未包含#include <fstream>。调用的函数参数,能够接收基类(istream)的地方,都能够接受子类(ifstream)
参考:
https://blog.csdn.net/txwtech/article/details/104251103std::istream& get(std::istream &in)//8.3
get函数也可以接收ifstream
*/
#include <iostream>
#include <string>
//#include <istream>
#include <fstream>
using namespace std;#include "get.h"int main()
{cout << "测试新写的函数,请输入数字,或者字母" << endl; //8.4double dval; get(cin); //输入什么内容,显示什么内容。输入错误可以有提示cout << "继续使用cin,输入一个double: " << endl;cin >> dval;cout << "您输入的是: " << dval << endl;cout << "习题8.6" << endl;string fileName;//fileName="aa.txt";cout << "Enter file name请输入一个文件名:test.txt " << endl;cin >> fileName;ifstream inFile(fileName.c_str()); //绑定输入的文件if (!inFile){cerr << "error:can not open input file" << fileName << endl;return -1;}get(inFile);return 0;
}

get.cpp

#include "get.h"std::istream& get(std::istream &in)//8.3
{int ival;while (in >> ival, !in.eof())//让in.eof()决定是否结束,ctrl+z结束输入{if (in.bad())//巨大错误throw std::runtime_error("IO stream error");if (in.fail())//判断输入类型是否相同{std::cerr << "bad data,try again." << std::endl; //std名称空间in.clear();//恢复流到正常状态in.ignore(200,'\n');//continue;}std::cout << "输入的数据: " << ival << std::endl;}in.clear();//恢复流到正常状态
}

get.h

//#pragma once
#ifndef _GET_H
#define _GET_H//头文件不要用using namesapce std;
#include <iostream>
std::istream& get(std::istream &in);#endif

 

利用流对象把文件内容读取到向量并显示。

/*ca75b_c++_txwtech*/#include <iostream>
#include <fstream>
#include <string>
#include <vector>using namespace std;
//文件名的内容放在向量里面int fileToVector(string fileName, vector<string> & svec) //习题8.9,一次读取一行
{ifstream inFile(fileName.c_str());//打开fileName的文件if (!inFile)return 1;string s;while (getline(inFile, s))//一次读取一行,放在s里面svec.push_back(s);//s字符串又放在vector向量里面inFile.close();//关闭流对象if (inFile.eof())//读取到文件末尾return 4;//正常返回if (inFile.bad())return 2;//系统重大故障if (inFile.fail())return 3;//输入字符串,但收入的数字之类的错误。}
int fileToVector1(string fileName, vector<string> & svec) //习题8.10,一次输入一个单词
{ifstream inFile(fileName.c_str());//打开fileName的文件if (!inFile)return 1;string s;//while (getline(inFile, s))//一次读取一行,放在s里面while(inFile>>s) //>>流输入操作符,一个一个的单词读取,空格作为单词分割的标志svec.push_back(s);//s字符串又放在vector向量里面inFile.close();//关闭流对象if (inFile.eof())//读取到文件末尾return 4;//正常返回if (inFile.bad())return 2;//系统重大故障if (inFile.fail())return 3;//输入字符串,但收入的数字之类的错误。}int main() //8.9
{vector<string> svec;string fileName, s;cout << "输入文件名: " << endl;cin >> fileName;//switch (fileToVector(fileName, svec)) //调用读取一行switch (fileToVector1(fileName, svec)) //读取单词一个一个读取{case 1:cout << "error:can not open file: " << fileName << endl;//break;return -1;case 2:cout << "系统出错了" << endl;return -1;case 3:cout << "输入数据类型不匹配的错误。" << endl;return -1;}cout << "向量的内容: " << endl;for (vector<string>::iterator iter = svec.begin(); iter != svec.end(); ++iter)cout << *iter << endl;//cout << "文件名有多少行呢》:" << svec.size() << endl;cout << "文件有多少个单词呢:" << svec.size() << endl;return 0;}

 


http://www.ppmy.cn/news/650917.html

相关文章

RK3288:linux系统中基于I2C的数字温度传感器TCN75A的驱动调试

CPU:RK3288 Kernel&#xff1a;4.4 Systerm:linux&#xff08;buidroot&#xff09; IC&#xff1a;TCN75A 下面我们来看这款芯片的介绍&#xff1a; 引脚介绍&#xff0c;一共八个引脚&#xff1a; 引脚描述&#xff1a; 我选择的是9位&#xff0c;0.5度的分辨率。 默认极限…

cyclone4驱动LM75A温湿度传感器学习

1. LM75A第一次使用&#xff0c;I2C接口&#xff0c;8脚 2. 打开quartus工程&#xff0c;下面只要是看看代码结构&#xff0c;问题在于多个always语句&#xff0c;逻辑上不太好分清楚&#xff0c;主要看状态机 1 module I2C_READ(2 clk,3 rst_n,4 scl,sda,data5 …

应用PIC16F1938中IIC读取LM75A温度

一&#xff0e;概述 LM75A是一个高精度温度传感器&#xff0c;精度高达0.125℃&#xff0c;可以采集的温度范围是-55℃~125℃。PIC16F1938可以通过IIC通信方式对LM75A里面的温度寄存器直接读取&#xff0c;并可设置相关的配置寄存器。每个LM75A的地址信号前四位是一样的&#…

基于Stm32f103硬件iic驱动LM75A温度传感器

这是LM75A温度传感器的概述&#xff0c;本文主要介绍基于Stm32f103的硬件iic驱动LM75A温度传感器。 这是我所使用的硬件电路&#xff0c;很简单。 对于该传感器的使用&#xff0c;主要是读取温度值&#xff0c;查看数据手册我们知道需要利用iic通讯读取。 首先我们要知道什么是…

zigbee网关 cc2530裸机驱动温度传感器LM75A

LM75A&#xff0c;数字温度传感器&#xff0c;IIC接口&#xff0c;读取简单&#xff0c;只需要读取2个寄存机的值就可计算出来温度 手里里有个贴片的LM75A&#xff0c;在一块废弃的pcb板上利用0805电阻脚把lm75a的sda和scl脚焊好&#xff0c;其它的引脚用插针焊好 现在lm75a对外…

USB TO I2C(上海同旺电子)调试器调试LM75A--TI

所需设备&#xff1a; 1、USB TO I2C(上海同旺电子)&#xff1b; 2、LM75A 1℃精度、12位数字温度传感器 可以参考 “USB TO I2C(上海同旺电子)调试器调试ADT75” Pin to Pin 兼容 TI 的 LM75A 引脚如下&#xff1a; ADI 的 ADT75 引脚如下&#xff1a; USB TO I2C(上…

lm75b 读取温度 c语言,STC单片机读取LM75A温度的代码,以及ADC读取电压。给大家分享一下把...

#include"main.h" char xdata temp_[3]; // char xdata test[15]; bit temp_flag; void Delay_us(int i) //iic延时 {int j; for(j=0;j } void IIC_init(void) //iic初始化 {SCL = 1; Delay_us(5); SDA = 1; Delay_us(5); } void iic_start(void) …

stm32软件模拟i2c通讯读取lm75a温度

很久以前&#xff0c;写过基于51单片机的i2c通信&#xff0c;具体是读写EEPROM。但是当时没能好好总结&#xff0c;只是记录了些代码&#xff0c;现回头去来看&#xff0c;真是一件头疼的事情。 对于stm32&#xff0c;其硬件i2c有着一些bug&#xff0c;此外对于i2c这种通用的串…