当前位置: 首页 > news >正文

网站建设的前期开发国际军事最新消息今天

网站建设的前期开发,国际军事最新消息今天,图片搜索,北京效果好的网站推广文章目录 一、类型转换C语言隐式类型转换强制类型转换 C类型转换的情况类型转换的函数(4个) 二、IO流1、缓冲区2、提高输入输出效率3、文件操作文件权限写操作 --- ofstream文本方式写入二进制方式写入 读操作 --- ifstream文本方式读取二进制方式读取 其…

文章目录

  • 一、类型转换
    • C语言
      • 隐式类型转换
      • 强制类型转换
    • C++
      • 类型转换的情况
      • 类型转换的函数(4个)
  • 二、IO流
    • 1、缓冲区
    • 2、提高输入输出效率
    • 3、文件操作
      • 文件权限
      • 写操作 --- ofstream
        • 文本方式写入
        • 二进制方式写入
      • 读操作 --- ifstream
        • 文本方式读取
        • 二进制方式读取
      • 其他操作
        • 判断文件是否成功打开?

一、类型转换

当两个类型不是严格的相同的时候,就会有类型转换的问题。

C语言

隐式类型转换和强制类型转换。

隐式类型转换

适用于类型相似的内置类型(整型、浮点数、字符型)之间进行类型转化。比如:整型和字符型之间,整型和浮点数之间。

int a = 10;
double b = a; // 整型和浮点数之间
char c = a; // 整型和字符型之间

强制类型转换

适用于整型和指针之间,指针和指针之间。

int a = 10;
int* pa = &a;
int b = (int)pa; // 整型和指针之间
double* pb = (double*)b; // 指针和指针之间

C++

类型转换的情况

C++不仅仅兼容C的类型转换,还有一些自定义类型之间的转换。

内置类型 -> 自定义类型

自定义类型 -> 内置类型

自定义类型 -> 自定义类型

// 内置类型转换成自定义类型
// 通过构造函数实现的
class A
{
private:int _a;int _b;
public:A(int a, int b):_a(a), _b(b){}
};
A a(1, 3);// 自定义类型转换成内置类型
// 通过get函数,将A类型转换成int
class A
{
private:int _a;int _b;
public:friend int get(A& a);A(int a, int b):_a(a), _b(b){}
};
int get(A& a)
{return a._a;
}// 自定义类型转换成自定义类型
// 将子类赋值给父类,也可以通过构造函数实现,方法不唯一
class A
{
private:int _a;int _b;
public:A(int a = 1, int b = 1):_a(a), _b(b){}
};
class B:public A
{
private:int _c;
public:B(int c = 1):_c(c){}
};
B b;
A a = b;

类型转换的函数(4个)

// 隐式类型转换:static_cast<T>
int a = 10;
double b = 3.4;
a = static_cast<int>(b);
// 强制类型转换:reinterpret<T>
int a = 10;
int* pa = &a;
int b = reinterpret_cast<int>(pa);
// const类型转换:const_cast<T> --- 用于删除变量的const属性
const int x = 10;
int* px = const_cast<int*>(&x);
*px = 4;
std::cout << *px << std::endl;
// 向下转换:dynamic_cast<T>(父类对象指针/引用 -> 子类指针/引用)
class A
{
public:virtual void print(){std::cout << "A: print()" << std::endl;}
};
class B : public A
{
public:virtual void print(){std::cout << "B: print()" << std::endl;}
};
A* a = new B;
B* b = dynamic_cast<B*>(a);
b->print();

二、IO流

1、缓冲区

输入输出是有缓冲区的概念的,根据Linux中学的一切皆文件,大概的也能明白(因为文件里面有缓冲区)。

// 根据下面的代码可以深刻的体会出缓冲区的概念。
// 一次性输入10x
// 下面会直接输出:
// 10
// x
// 我们只输入的了一次,为什么会直接都输出出来呢?
// 答:当我们输入10x的时候,第一次因为变量a是int类型,他只读到了10,然后就直接退出了,而x还在缓冲区中。当缓冲区不空的时候,我们是没有办法继续往里面进行读数据的,需要将其进行接收。然后ch正好是字符类型,接收了x,所以最后会直接打印出来,而不需要我们输入两次。// 所以为了解决某种用户输入不正确的数据时,需要我们进行判断,然后对缓冲区进行清空,以便不影响下一次输入。
#include <iostream>
int main()
{int a = 0;std::cin >> a;std::cout << a << std::endl;char ch = 0;std::cin >> ch;std::cout << ch << std::endl;return 0;
}

2、提高输入输出效率

// 第一种方式:--- 用C语言的输入输出
//printf
//scanf// 第二种方式 --- C++
// 在main函数中加入这三句语句,一个main函数只需要写一次
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);

3、文件操作

进行文件操作的时候只需要包含fstream即可。

下面是文件头文件的结构图。

image-20240820195456482

文件权限

  1. ios::in:以输入(读取)模式打开文件。
  2. ios::out:以输出(写入)模式打开文件。
  3. ios::app:以追加模式打开文件,写入的数据会追加到文件末尾。
  4. ios::ate:打开文件时,立即将文件指针移动到文件末尾。
  5. ios::trunc:如果文件已存在,打开时清空文件内容。
  6. ios::binary:以二进制模式打开文件,而不是默认的文本模式。

写操作 — ofstream

文本方式写入
#include <iostream>
#include <fstream>int main()
{// 以文本方式打开文件(如果默认路径下没有文件,则新建文件)、// 默认的权限是ios::out// std::ofstream fout("test.txt", std::ios::out); --- 以写的方式打开文件// std::ofstream fout("test.txt", std::ios::out | std::ios::app); --- 以追加模式的写的方式打开文件// ...std::ofstream fout("test.txt");// 文本输入fout << "12434\n";fout << "abcdefg";fout << "hijk";// 关闭文件fout.close(); return 0;
}
二进制方式写入
#include <iostream>
#include <string>
#include <fstream>
#include <vector>int main()
{std::vector<int> v = { 1, 2, 3, 4 };// 打开文件,以写的方式std::ofstream fout("test.txt", std::ios::out | std::ios::binary);// 写入文件// ostream& write (const char* s, streamsize n);for (auto& e : v){fout.write(reinterpret_cast<char*>(&e), sizeof(e));}// 关闭文件fout.close();return 0;
}

读操作 — ifstream

文本方式读取
#include <iostream>
#include <string>
#include <fstream>int main()
{// 打开文件,以读的方式std::ifstream fin("test.txt");// 读取文件std::string tmp;while (fin >> tmp){std::cout << tmp << std::endl;}// 关闭文件fin.close();return 0;
}
二进制方式读取
// 以什么方式写,就以什么方式读
// 也要注意数据的格式,如果是整型就整形方式读,自定义类型就自定义类型方式读
#include <iostream>
#include <string>
#include <fstream>
#include <vector>int main()
{// 打开文件,以读的方式std::ifstream fin("test.txt", std::ios::in | std::ios::binary);// 读取文件char ch;while (fin.read(&ch, sizeof(ch))){std::cout << ch;}if (fin.good()){std::cout << "读取成功" << std::endl;}// 关闭文件fin.close();return 0;
}

image-20240820220212954

其他操作

判断文件是否成功打开?
#include <iostream>
#include <string>
#include <fstream>
#include <vector>int main()
{// 打开文件,以读的方式std::ifstream fin("test.txt", std::ios::in | std::ios::binary);// 判断是否成功打开文件if (!fin){std::cout << "无法打开文件!" << std::endl;return 1;}// 关闭文件fin.close();return 0;
}

谢谢大家!

http://www.dt0577.cn/news/13654.html

相关文章:

  • 做恋足的视频网站深圳seo优化排名公司
  • 导航网站建设百度快速提交入口
  • 做家教什么网站seo搜索引擎优化师
  • 网站开发与设计实训心得app营销十大成功案例
  • 游戏模型外包网站google优化排名
  • wordpress怎么看展现量文章优化软件
  • 酒业网站模板下载网页界面设计
  • java能做网站吗seo推广话术
  • 做个动态网站多少钱国际新闻界期刊
  • 湛江公司做网站百度关键词搜索量排行
  • 大理网站制作全国疫情最新报告
  • 做网站如何快速推广一款产品百度app 浏览器
  • 深圳三级分销网站设计制作宣传产品的方式
  • 网站建设中图片广东东莞疫情最新消息
  • 网络行业有哪些seo网站关键词优化多少钱
  • 厦门外贸网站建设今日新闻联播
  • wordpress 未找到页面关键词优化需要从哪些方面开展?
  • 福州企业建站系统新媒体seo指的是什么
  • 外包加工网是否靠谱珠海百度搜索排名优化
  • 潍坊市做网站的公司徐州seo招聘
  • 铆钉机 东莞网站建设短视频培训机构
  • 简述网站推广的五要素苏州百度推广公司
  • wordpress日系主题百度问答seo
  • 网页设计与网站建设作业怎么做网络推广运营公司
  • 南昌做网站开发的公司有哪些b站推广引流最佳方法
  • 中山建设信息网站成都最新热门事件
  • 有没有做推文的网站网站域名注册查询
  • 随州网站推广哪家好公司网络推广排名定制
  • 深圳 网站定制网站seo诊断报告怎么写
  • 哪家网站建设最好网站推广是干嘛的