C++精解【10】

文章目录

  • 读写文件
    • 概述
    • example
  • csv
    • 读文件
    • 读取每个字段
    • 读取机器学习数据库iris
  • constexpr函数
  • GMP大整数
    • codeblock环境配置
    • 数据类型
    • 函数类
  • Eigen
    • minCoeff 和maxCoeff
    • Array类

读写文件

概述

  • fstream
typedef basic_fstream<char, char_traits<char>> fstream;

此类型是类模板 basic_fstream 的同义词,专用于具有默认字符特征的 char 类型的元素。

  • ifstream
    定义要用于从文件中按顺序读取单字节字符数据的流。
using namespace std;ifstream infile("hello.txt");if (!infile.bad())
{cout << infile.rdbuf();infile.close();
}
  • ofstream

专用于 char 模板参数的类型 basic_ofstream。

typedef basic_ofstream<char, char_traits<char>> ofstream;
  • openmode

如何与流进行交互。

class ios_base {
public:typedef implementation-defined-bitmask-type openmode;static const openmode  in;static const openmode  out;static const openmode  ate;static const openmode  app;static const openmode  trunc;static const openmode  binary;// ...
};

example

  • 例1
#include <iostream>
#include <fstream>using namespace std;int main(){//writeofstream fileOut;fileOut.open("hello.txt");fileOut<<"hello,world!"<<endl;fileOut<<"hello,hello";fileOut.close();//readifstream fileIn;char helloTxt[80];fileIn.open("hello.txt");fileIn>>helloTxt;cout<<helloTxt<<endl;fileIn>>helloTxt;cout<<helloTxt<<endl;fileIn.close();}
hello,world!
hello,helloProcess returned 0 (0x0)   execution time : 0.134 s
Press any key to continue.
  • 例2
// basic_fstream_class.cpp
// compile with: /EHsc#include <fstream>
#include <iostream>using namespace std;int main(int argc, char **argv)
{fstream fs("hello.txt", ios::in | ios::out | ios::trunc);if (!fs.bad()){// Writefs << "hello,world" << endl;fs << "hello!" << endl;fs.close();// readfs.open("hello.txt", ios::in);cout << fs.rdbuf();fs.close();}
}
  • 例3
#include <iostream>
#include <fstream>using namespace std;int main(){//writeofstream fileOut;fileOut.open("hello.txt");fileOut<<"hello,world!"<<endl;fileOut<<"hello,hello";fileOut.close();//readifstream fileIn;char helloTxt[80];fileIn.open("hello.txt");while (fileIn>>helloTxt){cout<<helloTxt<<endl;}fileIn.close();}
  • 例4
#include <iostream>
#include <fstream>using namespace std;int main(){//writeofstream fileOut;fileOut.open("hello.txt");fileOut<<"hello,world!"<<endl;fileOut<<"hello,hello";fileOut.close();//readifstream fileIn;char helloTxt[80];fileIn.open("hello1.txt");if (!fileIn.is_open()){cout<<"打开失败!"<<endl;return 0;}while (fileIn>>helloTxt){cout<<helloTxt<<endl;}fileIn.close();}
  • 例5
#include <iostream>
#include <fstream>using namespace std;int main(){//writeofstream fileOut;fileOut.open("hello.txt");fileOut<<"hello,world!"<<endl;fileOut<<"hello,hello";fileOut.close();//readifstream fileIn;char helloChar;fileIn.open("hello.txt");if (!fileIn.is_open()){cout<<"打开失败!"<<endl;return 0;}int i=0;while (fileIn.get(helloChar)){cout<<helloChar;if (helloChar!='\n') i++;}cout<<endl<<"文件的字符数:"<<i<<endl;fileIn.close();}
hello,world!
hello,hello
文件的字符数:23Process returned 0 (0x0)   execution time : 0.248 s
Press any key to continue.

更多内容在微软文档

csv

读文件

#include <iostream>
#include <fstream>using namespace std;int main(){//readifstream fileIn;char helloChar;fileIn.open("e:/ml_data/iris/iris.data");if (!fileIn.is_open()){cout<<"打开失败!"<<endl;return 0;}int i=0;while (fileIn.get(helloChar)){cout<<helloChar;if (helloChar!='\n') i++;}cout<<endl<<"文件的字符数:"<<i<<endl;fileIn.close();}

读取每个字段

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <sstream>using namespace std;
vector<string> split(const string &text, char separator);
int main(){//readifstream fileIn;char helloStr[100];vector<string> sampleDatas;fileIn.open("e:/ml_data/iris/iris.data");if (!fileIn.is_open()){cout<<"打开失败!"<<endl;return 0;}while (fileIn>>helloStr){sampleDatas=split(helloStr,',');for (const string &data: sampleDatas) {cout << data<<" " ;}cout<<endl;}fileIn.close();}vector<string> split(const string &text, char separator) {vector<string> tokens;stringstream ss(text);string item;while (getline(ss, item, separator)) {if (!item.empty()) {tokens.push_back(item);}}return tokens;
}

读取机器学习数据库iris

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <sstream>
#include <algorithm>
#include <regex>using namespace std;
struct IrisDa{float *irisX;int dataSize;int d;~IrisDa(){delete[] irisX;}
};vector<string> split(const string &text, char separator);
string removeSpaces(const string& input);
void rbLearn(const IrisDa *irisDa);int main(){ifstream fileIn;char helloStr[100];//read csvfileIn.open("e:/ml_data/iris/iris_sample.data");if (!fileIn.is_open()){cout<<"打开失败!"<<endl;return 0;}regex strRx(R"((\d+)(\.)(\d+))");smatch match;while (fileIn>>helloStr){//construct x(n) and d(n)IrisDa *irisDa=new IrisDa;vector<string> sampleDatas=split(helloStr,',');int dataCount=sampleDatas.size();float *irisX= new float[dataCount];//x(n)irisX[0]=1.0;int irisD;//d(n)int i=1;for (const string &data: sampleDatas) {string irisData=removeSpaces(data);bool found = regex_match(irisData, match, strRx);if (found) {irisX[i]=stof(irisData);i++;}else{if (irisData=="Iris-setosa"){irisD=1;}else{irisD=-1;}}}irisDa->irisX=irisX;irisDa->d=irisD;irisDa->dataSize=dataCount;rbLearn(irisDa);}fileIn.close();
}void rbLearn(const IrisDa *irisDa){cout<<"正在处理数据..."<<endl;for (int i=0;i<irisDa->dataSize;i++) {cout<<irisDa->irisX[i]<<" ";}cout<<endl;
}vector<string> split(const string &text, char separator) {vector<string> tokens;stringstream ss(text);string item;while (getline(ss, item, separator)) {if (!item.empty()) {tokens.push_back(item);}}return tokens;
}string removeSpaces(const string& input) {string result = input;result.erase(std::remove(result.begin(), result.end(), ' '), result.end());return result;
}

constexpr函数

函数可能在编译时求值,则声明它为constexpr,以提高效率。需要使用constexpr告诉编译器允许编译时计算。

constexpr int min(int x, int y) { return x < y ? x : y; }
void test(int v)
{int m1 = min(-1, 2);            // 可能在编译期计算constexpr int m2 = min(-1, 2);  // 编译时计算int m3 = min(-1, v);            // 运行时计算constexpr int m4 = min(-1, v);  // 错误,不能在编译期计算
}
int dcount = 0;
constexpr int double(int v)
{++dcount;   // constexpr 函数无副作用,因为这一行错误return v + v;
}

constexpr函数被隐式地指定为内联函数,此外,constexpr允许递归。

#include <iostream>
constexpr int fac(int n)
{return n > 0 ? n * fac( n - 1 ) : 1;
}
inline int myadd(int x,int y){return x+y;};
int main()
{int n;std::cout<<"请输入阶乘参数:";std::cin>>n;std::cout<<std::endl<<fac(n)<<std::endl;std::cout<<myadd(12,55)<<std::endl;return 0;
}

GMP大整数

codeblock环境配置

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

数据类型

  • 整型
mpz_t sum;struct foo { mpz_t x, y; };mpz_t vec[20];
  • 有理数
mpq_t quotient;

也是高倍精度分数。

  • 浮点数
mpf_t fp;

浮点函数接受并返回C类型mp_exp_t中的指数。目前,这通常是很长的,但在某些系统上,这是效率的一个指标。

  • 指针
Mpz_ptr用于指向mpz_t中的元素类型的指针
Mpz_srcptr for const指针指向mpz_t中的元素类型
Mpq_ptr用于指向mpq_t中的元素类型的指针
Mpq_srcptr for const指针指向mpq_t中的元素类型
Mpf_ptr用于指向mpf_t中元素类型的指针
Mpf_srcptr for const指针指向mpf_t中的元素类型
指向gmp_randstate_t中元素类型的指针
Gmp_randstate_srcptr for const指针指向gmp_randstate_t中的元素类型

函数类

用于有符号整数算术的函数,其名称以mpz_开头。关联类型为mpz_t。这门课大约有150个函数
用于有理数算术的函数,其名称以mpq_开头。关联类型为mpq_t。这门课大约有35个函数,但整数函数可以分别对分子和分母进行算术运算。
用于浮点运算的函数,其名称以mpf_开头。关联类型为mpf_t。这门课大约有70个函数。
对自然数进行操作的快速低级函数。这些由前面组中的函数使用,您也可以从时间要求非常严格的用户程序中直接调用它们。这些函数的名称以mpn_开头。关联类型为mp_limb_t数组。这个类中大约有60个(难以使用的)函数。
各种各样的功能。设置自定义分配的函数和生成随机数的函数。

Eigen

minCoeff 和maxCoeff

不带参数时,返回最小元素和最大元素,带参数时,返回元素所在坐标

#include <iostream>
#include "e:/eigen/Eigen/Dense"
using namespace std;
using namespace Eigen;
int main(){Matrix2d m {{1,2},{3,4}};std::ptrdiff_t i, j;int minOfM = m.minCoeff(&i,&j);cout << "Here is the matrix m:\n" << m << endl;cout << "Its minimum coefficient (" << minOfM<< ") is at position (" << i << "," << j << ")\n\n";int maxOfM= m.maxCoeff(&i,&j);cout << "Its maximum coefficient (" << maxOfM<< ") is at position (" << i << "," << j << ")\n\n";RowVector4i v = RowVector4i::Random();int maxOfV = v.maxCoeff(&i);cout << "Here is the vector v: " << v << endl;cout << "Its maximum coefficient (" << maxOfV<< ") is at position " << i << endl;int minOfV = v.minCoeff(&j);cout << "Its minimum coefficient (" << minOfV<< ") is at position " << j << endl;}
Here is the matrix m:
1 2
3 4
Its minimum coefficient (1) is at position (0,0)Its maximum coefficient (4) is at position (1,1)Here is the vector v:  730547559 -226810938  607950953  640895091
Its maximum coefficient (730547559) is at position 0
Its minimum coefficient (-226810938) is at position 1Process returned 0 (0x0)   execution time : 0.305 s
Press any key to continue.

Array类

Array类提供了通用数组,而Matrix类则用于线性代数。此外,Array类提供了一种简单的方法来执行系数操作,这种操作可能没有线性代数意义,比如向数组中的每个系数添加一个常数,或者对两个数组进行系数乘。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/368397.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VSCode常用的一些插件

Chinese (Simplified) 汉语&#xff08;简体&#xff09;拓展包。 Auto Close Tag 可以自动增加xml/html的闭合标签。 CodeSnap 截图神器。截图效果在下面。 Dracula Official vscode一个很好看的主题。 Git Graph git管理工具。 GitHub Repositories 有了它&#xff0c;不…

前端利用vue如何实现导入和导出功能.md

1. 前端利用vue如何实现导入和到处功能 1.1. 导入功能&#xff08;以导入Excel文件为例&#xff09; 1.1.1. 实现步骤: 1.1.1.1. 安装依赖: 首先&#xff0c;你需要安装处理Excel文件的库&#xff0c;如xlsx。1.1.1.2. 创建上传组件: 使用Element UI的<el-upload>组件或其…

Qt:5.QWidget属性介绍(Enabled属性-控件可用性设置、geometry属性-控件位置/大小设置)

目录 一、 QWidget属性的介绍&#xff1a; 二、Enabled属性-控件可用性设置&#xff1a; 2.1Enabled属性的介绍&#xff1a; 2.2获取控件当前可用状态的api——isEnabled()&#xff1a; 2.3设置控件当前的可用状态的api—— setEnabled() &#xff1a; 2.4 实例&#xff…

git提交实战

以新项目为例&#xff0c;如何在新项目新分支提交代码。 1.查看文件所在位置 git init 2.克隆项目到本地并完成身份配置 3.将需要新增的文件放到指定目录路径下 4.进入新克隆的文件 cd XXX 5.切换分支 git checkout XXX 6.标红者即为新提交的文件 git status 7.加入 git …

Is ChatGPT a Good Personality Recognizer? A Preliminary Study?

ChatGPT是一个很好的人格识别者吗&#xff1f;初步调研 摘要1 介绍2 背景和相关工作3 实验3.1 数据集3.2 提示策略3.3 基线3.4 评估指标3.5 实现细节3.6 Overall Performance (RQ1)3.7 ChatGPT在人格识别上的公平性 (RQ2)3.8 ChatGPT对下游任务的人格识别能力&#xff08;RQ3&a…

linux——IPC 进程间通信

IPC 进程间通信 interprocess communicate IPC&#xff08;Inter-Process Communication&#xff09;&#xff0c;即进程间通信&#xff0c;其产生的原因主要可以归纳为以下几点&#xff1a; 进程空间的独立性 资源隔离&#xff1a;在现代操作系统中&#xff0c;每个进程都…

ValidateAntiForgeryToken、AntiForgeryToken 防止CSRF(跨网站请求伪造)

用途&#xff1a;防止CSRF&#xff08;跨网站请求伪造&#xff09;。 用法&#xff1a;在View->Form表单中: aspx&#xff1a;<%:Html.AntiForgeryToken()%> razor&#xff1a;Html.AntiForgeryToken() 在Controller->Action动作上&#xff1a;[ValidateAntiForge…

SSM少儿读者交流系-计算机毕业设计源码20005

摘要 随着信息技术的发展和互联网的普及&#xff0c;少儿读者之间的交流方式发生了革命性的变化。通过使用Java编程语言&#xff0c;可以实现系统的高度灵活性和可扩展性。而SSM框架的采用&#xff0c;可以提供良好的开发结构和代码管理&#xff0c;使系统更加稳定和易于维护。…

基于Springboot的智慧信息化机房管理系统

1 项目介绍 1.1 研究目的和意义 随着社会的快速发展&#xff0c;计算机的影响是全面且深入的。人们生活水平的不断提高&#xff0c;日常生活中人们对高校共享机房管理方面的要求也在不断提高&#xff0c;需要高校共享机房的人数更是不断增加&#xff0c;使得高校共享机房管理…

向量数据库、主键存储引擎、高速网络 RDMA 框架……DolphinDB 版本更新啦!

盛夏已至&#xff0c;炎热的七月伊始&#xff0c;DolphinDB 也迎来了版本的更新。此次更新的 3.00.1 与 2.00.13 版本从多个维度进行了优化扩展&#xff0c;进一步深化了 DolphinDB 在机器学习、数据分析等领域的尝试与探索。 为了响应用户日益增长的 AI 运算需求&#xff0c;…

idea Git操作

1、代码拉取&#xff08;左上角&#xff09; 或 2、代码push&#xff08;左上角&#xff09; 3、切换分支&#xff08;右下角&#xff09; 4、分支管理 5、当前分支和某一个分支对比差异 6、当前分支某一个提交需要恢复成提交前状态&#xff08;revert&#xff09; 7、其他分…

大疆2025校招内推

需要内推码的请留言哦 期待你的加入

改变conda创建虚拟环境时的默认路径(C盘)

①C:\Users\Lenovo 找到C盘中用户目录下的.condarc文件 ②打开.condarc文件后&#xff0c;添加并修改.condarc 中的 env_dirs 环境路径&#xff0c;按顺序第⼀个路径作为默认存储路径&#xff0c;也就是我的E盘&#xff08;需要你先在E盘中新建文件夹envsE&#xff09;。修改完…

LabVIEW新能源汽车电池性能测试系统

新能源汽车的核心部件之一是电池&#xff0c;其性能直接关系到整车的续航里程、安全性和寿命。为了确保电池的性能和可靠性&#xff0c;测试是必不可少的环节。本文介绍了一种基于LabVIEW的新能源汽车电池性能测试系统&#xff0c;通过LabVIEW与数据采集设备的无缝集成&#xf…

【web APIs】快速上手Day05(Bom操作)

目录 Web APIs - 第5天笔记js组成window对象BOM定时器-延迟函数案例-5秒钟之后消失的广告 JS执行机制location对象案例-5秒钟之后跳转的页面 navigator对象histroy对象 本地存储&#xff08;今日重点&#xff09;localStorage&#xff08;重点&#xff09;sessionStorage&#…

JAVA数字化产科管理平台源码:涵盖了孕妇从建档、产检、保健、随访、分娩到产后42天全流程的信息化管理

JAVA数字化产科管理平台源码&#xff1a;涵盖了孕妇从建档、产检、保健、随访、分娩到产后42天全流程的信息化管理 智慧产科管理系统是基于自主研发妇幼信息平台&#xff0c;为医院产科量身打造的信息管理系统&#xff0c;涵盖了孕妇从建档、产检、保健、随访、分娩到产后42天全…

米国政府呼吁抛弃 C 和 C++

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「C的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 很多观点认为C 或 C永远不可被…

Django 模版继承

1&#xff0c;设计母版页 Test/templates/6/base.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><!-- 修正了模板标签的全角字符问题 -->{% block title %}<title>这个是母版页</title>{…

记录一下简单导入导出excel二级表头

数据库导入导出表头 之前的工具类GenerateExcelToFile新增两个导出这种二级表头方法 package com.njry.utils;import cn.hutool.core.util.IdUtil; import com.njry.config.FileProperties; import com.njry.exception.BadRequestException; import org.apache.poi.hssf.user…