五、C++语言初阶:文件

2023-11-04

5 文件

5.1 流

  • 流:
    数据从一个对象到另一个对象的传输。
  • 功能
    标准输入输出+文件处理
分类 含义
文本流 一串ASCII字符
二进制流 一串二进制

5.2 流类型

标准库定义了三大类流类型:标准I/O流、文件流、字符串流

  • 标准I/O流
    ios是抽象类
    ostreamcout、clog、cerr的类
    istreamcin的类
  • 文件流类型
    ifstream从文件读取数据
    ofstream向文件写入数据
    iofstream文件读写数据
  • 字符串流类型
    istringstreamstring读取数据
    ostringstreamstring写入数据
    iostringstream读写string数据

5.3 流对象

通常标准I/O流对象是全局对象不需要定义,而文件流对象和字符串流对象需要用户定义。

标准I/O流对象有以下四个:

全局流对象 名称 缓存
cout 标准输出流 带缓存
cin 标准输入流 带缓存
clog 标准日志流 带缓存
cerr 标准错误流 无缓存

注:流对象通常都不能复制。

5.4 流对象状态

流对象状态在某一个时刻必定处于以下四个状态之一。

状态 含义
good() 前一个流操作成功
eof() 到输入尾/文件尾
fail() 发生意外事情(读取失败)
bad() 发生意外严重事情(磁盘读取失败)

5.5 I/O操作

  • I/O操作主要有如下五种:
    输入操作:in >> x或者getline(in,s)
    输出操作:out << x
    操作符
    流状态
    格式化
  • 输出流默认设置
类型 进制 宽度 对齐 填充 精度
整数 十进制 0 右对齐 空格 1
实数 十进制 0 右对齐 空格 6位数
字符串 - 0 右对齐 空格 字符串实际长度
  • 格式控制
  • 格式控制成员函数
流对象.格式控制函数(实参)
  • 预定义格式控制函数
预定义格式控制函数(实参)
  • 流的输出控制格式
作用 格式控制成员函数 预定义格式控制函数 预定义格式控制符/操作子 效果持续
进制 flags() setf() unsetf() setiosflags() dec oct hex showbase 能持续
宽度 width(n) setw(n) - 不能持续
对齐 flags() setf() unsetf() setiosflags() right left internal 能持续
填充 fill(c) setfill(c) - 能持续
精度 precision(n) setprecision(n) - 能持续
  • 流的输出控制格式:dec oct hex
  • 数据输入成员函数
    字符输入成员函数:get()
    字符串输入成员函数:getline()
  • 数据输出成员函数:put()

5.6 输出格式控制

5.6.1 对齐方式

flag manipulator 作用
ios::left left 居左
ios::right right 居右
ios::internal internal 输出符号或进制后填充
  • 实例:操作子方式和成员函数方式
#include <iostream>
#include <iomanip> //sete()
using namespace std;

int main(){
    // 默认数字右对齐
    //成员函数方式
    cout.width(6);
    cout.flags(ios::left); // 设置左对齐
    cout.fill('=');
    cout << 10 << endl;
    cout.width(6);
    cout << 10000 << endl;
    cout.width(6);
    cout << 1000 << endl;
    cout.width(6);
    cout << 100 << endl;
    cout.width(6);
    cout << 20 << endl;
    //操作子方式
    cout << setw(6) << left << setfill('-') << 10 << endl;
    cout << setw(6) << 10000 << endl;
    cout << setw(6) << 1000 << endl;
    cout << setw(6) << 100 << endl;
    cout << setw(6) << 20 << endl;
    cout << setw(6) << "abc" << endl;
}
10====
10000=
1000==
100===
20====
10----
10000-
1000--
100---
20----
abc---

5.6.2 整数输出格式

flag manipulator 作用 是否默认
ios::dec dec 十进制
ios::oct oct 八进制
ios::hex hex 十六进制
ios::uppercase uppercase 使用大写输出十六进制
ios::showbase showbase 输出带有进制的字符
  • 成员函数方式
#include <iostream>
using namespace std;
int main(){
    int n = 11;
    cout.flags(ios::dec);
    cout << n << endl;
    cout.flags(ios::hex);
    cout << n << endl;
    cout.flags(ios::oct);
    cout << n << endl;

    cout.flags(ios::showbase|ios::dec);
    cout << n << endl;
    cout.flags(ios::showbase|ios::oct);
    cout << n << endl;
    cout.flags(ios::showbase|ios::hex);
    cout << n << endl;

    cout.flags(ios::showbase|ios::uppercase|ios::dec);
    cout << n << endl;
    cout.flags(ios::showbase|ios::uppercase|ios::oct);
    cout << n << endl;
    cout.flags(ios::showbase|ios::uppercase|ios::hex);
    cout << n << endl;
}
  • 操作子方式
#include <iostream>
using namespace std;
int main(){
    int n = 11;
    cout << dec << n << endl;
    cout << hex << n << endl;
    cout << oct << n << endl;

    cout << showbase << dec << n << endl;
    cout << oct << n << endl;
    cout << hex << n << endl;

    cout << uppercase << dec << n << endl;
    cout << oct << n << endl;
    cout << hex << n << endl;
}

5.6.3 浮点数输出格式

flag 作用 是否默认 精度
ios::defaultfloat 默认浮点数格式 最多保留多少位数字
ios::scientific 科学计数法输出浮点数 小数点后最多保留多少位数字
ios::fixed 定点数方式输出实数 小数点后最多保留多少位数字

注:
1、如果浮点数没有小数时默认不显示小时点,使用ios::showpoint可以强制输出浮点数时,必须带小数点。
2、定点数方式比浮点数方式更精确
取浮点数精确度时,设置ios::fixed

  • 成员函数方式
#include <iostream>     // cout, std::fixed, std::scientific
using namespace std;
int main () {
  double a = 3.1415926534;
  double b = 2006.0;
  double c = 1.0e-10;

  cout.precision(5);
  cout << "default:\n";
  cout << a << endl << b << endl << c << endl;
  
  cout << "fixed:\n";
  cout.flags(ios::fixed);
  cout << a << endl << b << endl << c << endl;

  cout << "scientific:\n";
  cout.flags(ios::scientific);
  cout << a << endl << b << endl << c << endl;

  return 0;
}
  • 操作子方式
#include <iostream>     // std::cout, std::fixed, std::scientific
#include <iomanip>
using namespace std;
int main () {
  double a = 3.1415926534;
  double b = 2006.0;
  double c = 1.0e-10;

  cout << setprecision(5)
       << "default:\n"
       << a << endl << b << endl << c << endl;
  
  cout << "fixed:\n" << fixed
       << a << endl << b << endl << c << endl;

  cout << "scientific:\n" << scientific
       << a << endl << b << endl << c << endl;

  return 0;
}
  • 混合方式
#include <iostream>     // std::cout, std::fixed, std::scientific
int main () {
  double a = 3.1415926534;
  double b = 2006.0;
  double c = 1.0e-10;

  std::cout.precision(5);
  std::cout << "default:\n";
  std::cout << a << '\n' << b << '\n' << c << '\n\n'
  
  std::cout << "fixed:\n" << std::fixed;
  std::cout << a << '\n' << b << '\n' << c << '\n\n'

  std::cout << "scientific:\n" << std::scientific;
  std::cout << a << '\n' << b << '\n' << c << '\n\n';

  return 0;
}

5.6.4 布尔类型输出格式

flag manipulator 作用 默认
ios::boolalpha boolalpha bool值以字符串true/false输出

5.6.5 其他

flag manipulator 作用 默认
ios::showpos showpos 输出十进制0或者正数时,带+号
  • 成员函数方式
#include <iostream>     // std::cout, std::showpos, std::noshowpos
using namespace std;
int main () {
  int p = 1;
  int z = 0;
  int n = -1;
  cout.setf(ios::showpos); cout << p << '\t' << z << '\t' << n << endl;
  cout.unsetf(ios::showpos); cout << p << '\t' << z << '\t' << n << endl;
  return 0;
}
  • 操作子方式
#include <iostream>     // std::cout, std::showpos, std::noshowpos
using namespace std;
int main () {
  int p = 1;
  int z = 0;
  int n = -1;
  cout << showpos   << p << '\t' << z << '\t' << n << endl;
  cout << noshowpos << p << '\t' << z << '\t' << n << endl;
  return 0;
}

注: 复数虚部a+bi使用showpos非常合适。

5.7 istringstreamostringstream

  • 头文件:
#include <sstream>
  • istringstream :字符串转数字
  • ostringstream: 数字转字符串
  • 实例:
#include <iostream>
#include <iomanip>
using namespace std;

int Stoi(const string& s){
    int n;
    istringstream iss(s);
    iss >> n;
    return n;
}
string Itos(int n){
    ostringstream oss;
    oss << n;
    return oss.str();
}
int main(){
    int a = 100;
    ostringstream oss; // 数字转字符串
    oss << a;
    cout << oss.str() << endl;
    cout << Itos(a) << endl;
	
    istringstream iss("12345"); // 字符串转数字
    iss >> a;
    cout << a << endl;
    cout << Stoi("12345") << endl;

    cout << (stoi("1000")+123) << endl;
}
100
100
12345
12345
1123
  • C++11提供如下函数简化字符串转数字
stoi() stol() stoul() stoll() stoull()
stof() stod() stold()

5.8 文件读写

  • C++文件读写
    文件:文件名+文件内容(有序数据集合)
    文件名:字符序列
    文件数据格式:二进制文件/文本文件
  • C++文件操作流程
    打开文件
    读写文件
    关闭文件

5.8.1 打开/关闭文件

操作 代码
定义读文件流对象 ifstream 读文件流对象
定义写文件流对象 ofstream 写读文件流对象
定义读写文件流对象 fstream 读写读文件流对象
成员函数打开文件 文件流对象.open(文件名,文件打开方式)
构造函数打开文件 文件流类 对象(文件名,文件打开方式)
判断文件是否打开 !文件流对象
关闭文件 文件流对象.close(变量)

5.8.2 文本文件读写

操作 代码
提取运算符读文件 文件流对象 >> 变量
插入运算符写文件 文件流对象 << 变量
成员函数读文件 文件流对象.get(变量)
成员函数写文件 文件流对象.put(变量)

5.8.3 二进制文件读写

操作 代码
读函数 read()
写函数 write()
测试文件结束 eof()
  • 实例:
// 以二进制输入输出,查看输出:od test od -A x -t x1z -v
#include <iostream>
#include <fstream>
using namespace std;
int main(){
    cout << ios::out << endl; // 1000
    cout << ios::in << endl; //  0100
    cout << ios::binary << endl; // 0010
    // ios::out|ios::binary  // 1010
    //     
    int n = 1000;

    ofstream fout("./test",ios::out|ios::binary);
    if(!fout){
        cerr << "文件打开失败" << endl;
    }
    //fout << n << endl;
    fout.write((const char*)&n,sizeof(n));
    fout.close();

    ifstream fin("./test",ios::in|ios::binary);
    if(!fin){
        cerr << "文件打开失败" << endl;
    }
    int m;
    //fin >> m;
    fin.read((char*)&m,sizeof(m));
    fin.close();
    cout << dec << m << endl;
}

5.8.4 文件打开方式

类型 代码
ios::in
ios::out
添加末尾 ios::app
已存在文件 ios::nocreate
未打开文件 ios::noreplace
二进制 ios::binary

5.8.5 文件对象指针位置函数

操作 代码
获取读位置 对象.tellg()
获取写位置 对象.tellp()
设置读位置 对象.seekg()
设置写位置 对象.seekp()
  • 注:
    函数后缀p表示put(输出),后缀g表示get(输入)。
    如果文件是以ios::app文本追加方式打开,指针位置默认在文件结束,其他情况默认在文件开头。

5.8.6 文件对象状态函数

操作 代码
判断文件对象状态是否正常 对象.good()
重置文件对象状态 对象.clear()

5.9 stream流文件读写

  • ifstream文件读
ifstream fin(文件路径);
fin >> 变量
fin.close();
  • ofstream文件写
ofstream fout(文件路径);
fout << 变量
fout.close();

实例:

#include <iostream>
#include <fstream>
using namespace std;

int main(){
    cout << ios::out << endl; // 1000
    cout << ios::in << endl; //  0100
    cout << ios::binary << endl; // 0010
    // ios::out|ios::binary  // 1010
    //     
    int n = 1000;

    ofstream fout("./test",ios::out);
    if(!fout){
        cerr << "文件打开失败" << endl;
    }
    fout << n << endl;
    fout.close();

    ifstream fin("./test",ios::in);
    if(!fin){
        cerr << "文件打开失败" << endl;
    }
    int m;
    fin >> m;
    fin.close();
    cout << m << endl;
}
16
8
4
1000
[root@localhost 5]# cat test
1000
  • fstream文件读和写
fstream fs(文件路径,ios::in|ios::out|ios::app);
if(fs){
  fs << 变量;
  fs.seekg(ios::beg);
  fs >> 变量;
  fs.close();
}
  • fstream的打开模式是否创建不存在的文件
打开模式 是否创建不存在的文件
ios::in
ios::out
ios::in/ios::out
ios::in/ios::out/ios::app
  • 实例:先读后写
    fstream fs("test.txt",ios::in|ios::out|ios::app);
    if(fs){
        // 读文件
        string str;
        while(fs >> str){
            cout << str << endl;
        }
        fs.clear();// 清除错误
        // 写文件
        while(cin >> str){
            fs << str << endl;
        }
    }
  • 实例:先写后读
    fstream fs("test.txt",ios::in|ios::out|ios::app);
    if(fs){
        // 写文件
        string str;
        while(cin >> str)
            fs << str << endl;    
        // 读文件  
        fs.seekg(ios::beg);
        while(fs >> str)
            cout << str << endl;
        // 后续如果对fs操作,需要清空fs状态
    }else{
        cerr << "file not exist " << endl;
    }

5.10 文件指针FILE读写

  • FILE文件指针读
FILE* fp = fopen(文件路径,"r");
fscanf(,fp);
fclose(fp);
  • FILE文件指针写
FILE* fp = fopen(文件路径,"w");
fprintf(,fp);
fclose(fp); 

对象的序列化与反序列化
序列化: 把对象转化成文本/二进制
反序列化: 把文本/二进制转化成对象

  • 文件重定向
freopen(文件路径,操作,标准IO)

操作:读(r) 写(w)

  • 重定向写
freopen("out.txt","w",stdout);
cout << "out data" <<endl;
  • 重定向读
freopen("in.txt","r",stdin);
string str;
cin >> str;
  • 几种常见的文件读取方式对比
ifstream + fin
freopen+cin+sync_with_stdio(false)
FILE* + fscanf
freopen+scanf
freopen+cin
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

五、C++语言初阶:文件 的相关文章

  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 仅使用containerd(不使用Docker)修剪容器镜像

    如果我刚刚containerd安装在 Linux 系统上 即 Docker 是not安装 如何删除未使用的容器映像以节省磁盘空间 Docker 就是这么方便docker system prune https docs docker com
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • C# 列表通用扩展方法与非通用扩展方法

    这是一个简单的问题 我希望 集合类中有通用和非通用方法 例如List
  • 有没有一种快速方法可以从 Jar/war 中删除文件,而无需提取 jar 并重新创建它?

    所以我需要从 jar war 文件中删除一个文件 我希望有类似 jar d myjar jar file I donot need txt 的内容 但现在我能看到从 Linux 命令行执行此操作的唯一方法 不使用 WinRAR Winzip
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 计算机中丢失dasfj_v1.2.dll,S7DasBrMenu.dll(修复丢失S7DasBrMenu.dll文件)V1.0 正式版

    S7DasBrMenu dll 修复丢失S7DasBrMenu dll文件 是针对S7DasBrMenu dll文件的一款很好用的修复工具 使用电脑时遇到S7DasBrMenu dll文件丢失怎么办 没关系 小编带来的这款S7DasBrMe
  • 深入理解设计原则之KISS/YAGNI/DRY原则【软件架构设计】

    系列文章目录 C 高性能优化编程系列 软件架构设计系列 深入理解设计模式系列 高级C 并发线程编程 如果敌人使你生气 说明你没有胜过他的信心 If the enemy makes you angry that means you have
  • js 判断字符串中是否包含某个字符串

    可通过str includes 和str indexOf 1 includes 语法 arr includes searchElement arr includes searchElement fromIndex 参数说明 参数 描述 se
  • 数据结构-线性结构之线性表

    什么是线性表 线性表 Linear List 由同类型数据元素构成的有序序列的线性结构 1 表中元素个数称为线性表的长度 2 线性表没有元素时 称为空表 3 表起始位置称为表头 表的结束位置称为表尾 线性表的抽象数据类型描述 类型名称 线性
  • 使用maven 打成可提供给第三方使用的jar包

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 集成环境idea 2 目标第三方可直接引入使用 步骤如下 0 组件项目打包一定要把build 元素注释掉 否则别人无法引入 jar包 pom 例子如下
  • Django笔记总结

    1 web框架的本质 web通信流程 web我们这里指的就是通过浏览器去访问服务端 请求页面或者数据的通信方式 属于B S架构 就是我们常见的网站 浏览器与服务端的通信流程 浏览器客户端发送一个请求信息 数据 发送到我们服务端 服务端接受这
  • 使用强随机数

    伪随机数易被攻击者破解而找到其数序生成规律 伪随机数不能用于安全敏感应用 常见安全敏感应用 SessionID的生成 挑战算法中的随机数生成 验证码的随机数生成 生成重要随机文件的文件名 生成密钥相关的随机数等 对于安全敏感应用 应该使用强
  • H3C交换机堆叠(IRF)

    目录 1 IRF简介 1 1 实验环境 1 2 添加交换机 1 3 添加连接线 1 4 启动设备 1 5 修改设备名称 1 6 关闭IRF物理端口 1 7 设置IRF域编号 1 8 设置member成员编号 1 9 配置IRF端口并与物理端
  • 使用ESP8266和Blynk应用程序的远程房间恒温器

    该项目可通过您的手机通过家庭WiFi或移动网络的任何地方控制您的家庭供暖单元 基本上 它可以用远程控制器代替普通的可编程房间恒温器 作为遥控器 它使用安装了Blynk App并配置为可以满足所有需求的智能手机 智能手机和供暖系统之间的通信由
  • Android 9(P)应用进程创建流程大揭秘

    Android 9 P 应用进程创建流程大揭秘 Android 9 P 系统启动及进程创建源码分析目录 Android 9 P 之init进程启动源码分析指南之一 Android 9 P 之init进程启动源码分析指南之二 Android
  • 【面试题】-java分布式及微服务面试题汇总

    目录 1 CAP理论 2 BASE理论 3 接口的幂等性问题 4 消息中间件如何解决消息丢失问题 5 什么是分布式事务 分布式事务的类型有哪些 6 分布式事务的解决方案有哪些 7 Dubbo的服务请求失败怎么处理 10 Soa和微服务架构有
  • 二叉树中序线索化与遍历(c)

    对下图的二叉树进行 1 创建一个带线索域的二叉树 数据类型如下 typedef struct 当 tag 为0时 代表child 正常指向下一个节点 当tag为1时 child为线索 其中 lchild 为指向中序遍历前驱 rchild 为
  • 中级职称的计算机考试题库,中级职称计算机考试模拟题库及答案

    资料仅供参考 中级职称计算机考试模拟题库及答案 1 计算机中数据的表示形式是 C A 八进制 B 十进制 C 二进制 D 十六进制 2 硬盘工作时应特别注意避免 B A 噪声 B 震动 C 潮湿 D 日光 3 下面列出的四种存储器中 易失性
  • 好像还挺好玩的GAN5——Keras搭建COGAN耦合生成式对抗网络

    好像还挺好玩的GAN5 Keras搭建COGAN耦合生成式对抗网络 学习前言 什么是COGAN 神经网络构建 1 Generator 2 Discriminator 训练思路 实现全部代码 学习前言 发现一个挺有意思的结构 可以通过同一个输
  • Unity实现扇形小地图的区域检测

    说明 最近接到一个需求 在一个雷达界面 扇形UI 的界面上显示出三维场景中真实的物体显示情况 我的思路就是一个三维场景某物体的位置映射到二维UI界面上 实现思路 物体到扇形原点的距离需要小于扇形半径的距离 否则就不在扇形范围内 物体与扇形原
  • 【git】 无法commit问题

    今天写完代码git commit m 一下发现提示 Another git process seems to be running in this repository e g an editor opened by git commit
  • 2022-10-20 Linux LED灯驱动gpio-leds心跳呼吸灯heartbeat、timer,路径/sys/bus/platform/devices/leds

    一 测试环境 Android 9 系统 二 驱动文件在 kernel drivers leds leds gpio c 三 dts的官方配置文档 kernel Documentation devicetree bindings leds l
  • Idea 使用技巧(MAC)

    记住符 打标快捷键 Ctrl Shift 任意数字 查标快捷键 Ctrl 任意数字 在Idea查看标签相关操作 Navigate Bookmarks 快捷键设置 intellij Preferencs keyMaps 快捷键 顶部 fn c
  • crontab每分钟执行一次任务

    0 实例 在 home 下面写了一个test sh bin sh echo hello gt home hello txt echo hello hello hello hello gt gt home hello txt 还是用这个比较好
  • 五、C++语言初阶:文件

    5 文件 5 1 流 流 数据从一个对象到另一个对象的传输 功能 标准输入输出 文件处理 分类 含义 文本流 一串ASCII字符 二进制流 一串二进制 5 2 流类型 标准库定义了三大类流类型 标准I O流 文件流 字符串流 标准I O流