您的位置:首页 > 文旅 > 美景 > 黄骅港什么时候开海_崇信县人民政府门户网_最新热点新闻事件_软文推广营销平台

黄骅港什么时候开海_崇信县人民政府门户网_最新热点新闻事件_软文推广营销平台

2025/2/24 14:26:03 来源:https://blog.csdn.net/qq_36658033/article/details/144223367  浏览:    关键词:黄骅港什么时候开海_崇信县人民政府门户网_最新热点新闻事件_软文推广营销平台
黄骅港什么时候开海_崇信县人民政府门户网_最新热点新闻事件_软文推广营销平台

小甲鱼学习课程

02

#include <iostream>

头文件  iostream    io+stream    翻译为IO流 输入输出流

using namespace std;  引入命名空间

c++标准库所使用的所有标识符都是在同一个特殊的名字空间std中来定义的;

偷懒使用这句话;

std::cout <<"第一个int元素结果是:" << data[0]<<endl;

std::cout   可以直接使用 cout 代替

endl   结束输出流,没有这个就会一直流出;

cout输出流例子

#include <iostream>
using namespace std;
int main()
{int data[] = {99,1,2,3,4,5};int size = sizeof(data) / sizeof(data[0]);std::cout <<"第一个int元素结果是:" << data[0]<<endl;
}

03

cin输入流

配合>> 就是已经重载,重载类似于替代原有含义,替代了右移,变成了提取信息;

提取输入流的时候,提取正确的类型返回true,否则falsh;

如int i;

cin>>i,提取到3.14小数点,就返回falsh,因为i是int类型;但是可以提取到3;

可以提取字符串、int、float、double类型

cin.peek();检查当前流的字符

cin.get();读取流的下一个字符

#include <iostream>
using namespace std;
int main()
{int i,sum=0;while (cin>>i){sum += i;while (cin.peek() == ' ')//如果为空格,一直获取空格{cin.get();}if (cin.peek() == '\n'){break;}}std::cout << sum;
}

    

cin.ignore(n);//忽略 n个字符

cin.ignore(n,‘ x’);//忽略 n个字符,n个字符以内遇到x就结束忽略
cin.getline(buf, n);//保存n个字符到buf

int main()
{char buf[20];cin.ignore(7);//忽略 7个字符cin.getline(buf, 10);//保存10个字符std::cout << buf<<endl;
}

cin.read(buf,10);//读取10个字符到buf

cin.gcount()  //返回输入流的字符计数值

int main()
{char buf[20];cin.read(buf,10);//读取10个字符到bufstd::cout << cin.gcount() << endl;//输出输入流的字符计数
}

04

在工程下面新建一个123.txt文本

文件输出流

ofstream out;//流出到文件

out.open("123.txt");  这个流指定文本,加载到程序内存

out.close();   关闭 这个流指定文本

#include <iostream>
#include<fstream>//文件数据流
using namespace std;
int main()
{ofstream out;//输出文件数据流out.open("123.txt");//输出流;打开文件,文件流指向这个文件if (!out){cerr << "打开文件失败" << endl;return 0;}for(int i=0;i<10;i++){out << i;//文件输出流,流入指定位置}out << endl;//停止流out.close();//关闭文件输出流std::cout << "Hello World!\n";
}

ifstream in; 输入文件流对象;用来流入到文件

in.open("123.txt");//输入文件流,这个流指定文本,从这个文件流入,加载到程序内存

if ( !in ) 如果打开文件失败返回false

#include <iostream>
#include<fstream>
using namespace std;
int main()
{ifstream in;//输入文件流in.open("123.txt");//输入文件流,指定文本,从这个文件流入if (!in){cout << "打开文件失败" << endl;return 0;}char i;while (in>>i)//文件流入给字符i{cout << i;//}in.close();//关闭这个流的文本std::cout << "Hello World!\n";
}

    ifstream in("123.txt");  也可以构建对象的时候直接打开文件,指定流文件
    ofstream out("123.txt");

    fstream in("123.txt",int open_mode);//二参数打开
    //open_mode 可以如下
    ios::in;//打开一个可读文件
    ios::out;//打开一个可写文件
    ios::binary;//以二进制的形式打开一个文件
    ios::app;//写入的所有数据将被追加到文件的末尾
    ios::trunc;//删除文件原来已经存在的内容
    ios::_Nocreate;//如果要打开的文件不存在,那么以此参数调用open函数将无法进行
    ios::_Noreplace;//如果要打开的文件已存在,试图用open打开时返回错误

在c++库中如下:所以可以多种模式用 并运算符使用

    static constexpr _Openmode in         = static_cast<_Openmode>(0x01);static constexpr _Openmode out        = static_cast<_Openmode>(0x02);static constexpr _Openmode ate        = static_cast<_Openmode>(0x04);static constexpr _Openmode app        = static_cast<_Openmode>(0x08);static constexpr _Openmode trunc      = static_cast<_Openmode>(0x10);static constexpr _Openmode _Nocreate  = static_cast<_Openmode>(0x40);static constexpr _Openmode _Noreplace = static_cast<_Openmode>(0x80);static constexpr _Openmode binary     = static_cast<_Openmode>(0x20);

fstream fp("123.txt",ios::in|ios::out);文件流对象,输入输出流模式,指定文件

fp.seekg( ) 文件定位

#include <iostream>
#include<fstream>
using namespace std;/*
seekg是对输入文件定位,它有两个参数:第一个参数是偏移量,第二个参数是基地址。
ios::end是代表流的结尾,0代表偏移量。f.seekg(0, ios::end);意思是直接跳到当前流的结尾,略过流内的所有数据*/
int main()
{fstream fp("123.txt",ios::in|ios::out);//if (!fp){cerr << "打开文件失败" << endl;}fp << "145a4da4dsd1435";//流出到文件static char str[30];fp.seekg(ios::beg); //ios::end; 流文件结尾fp >> str;//流入到数组cout << str << endl;fp.close();return 0;
}

05输入输出总结

1

#include <iostream>int main()
{char answer;std::cout << "请问可以格式化您的硬盘吗?【Y/N】" << "\n";std::cin >> answer;//缓冲区里面:一个是输入字符,和回车switch (answer){case 'y':case 'Y':std::cout << "格式化了\n";break;case 'n':case 'N':std::cout << "不会格式化\n";break;default:std::cout << "输入错误\n";break;}std::cin.ignore(10,'\n');//忽略10个字符,直到10个字符内存在回车 ;为了忽略那个输入回车std::cin.get();//等待输入结束std::cout << "Hello World!\n";
}

    //输入检测函数
    std::cin.eof();//输入到文件的末尾返回true
    std::cin.fail();//如果cin无法工作,返回true
    std::cin.bad();//如果cin因为比较严重的原因而无法工作,返回true

补充:

cin.clear()//清除标示符

重置错误标识符‌:当输入操作失败时,例如输入了一个非法的字符,cin会设置错误标识符。此时,可以使用cin.clear()来重置这些标识符,使其回到无错误状态

 06:函数的重载

定义:同样的名字再定义一个有着不同参数但是有着同样用途的函数;

参数个数上的不同,也可以是参数类型的不同;

只能通过不同的参数重载,不能通过返回值重载

void sum_add_100();//重载如下

#include <iostream>
void sum_add_100(double a);
void sum_add_100(int a);
int main()
{double z = 0;int b = 0;std::cout << "请输入double型";std::cin >> z;std::cin.ignore(10, '\n');sum_add_100(z);std::cout << "请输入int型";std::cin >> b;std::cin.ignore(10, '\n');sum_add_100(b);std::cout << "Hello World!\n";}void sum_add_100(double a)
{a += 100;std::cout << a<<'\n';
}
void sum_add_100(int a)
{a += 100;std::cout << a << '\n';}

 数组类型

指针类型

结构类型

7-9数组类型

数组类型:和c语言一样;

字符串类型:本质也是字符存在数组;但是c++使用不一样

std::string str;//构建字符串对象

std::getline(std::cin,str);//获取行,用cin的方式,获取到字符串对象

#include <iostream>
#include<string>
int main()
{std::string str;//构建字符串对象std::cout << "请输入一串字符: \n";//   std::cin >> str;std::getline(std::cin,str);std::cout << str<<'\n';std::cout << "Hello World!\n";
}

获取子串

std::string str = "Hello, World!";

std::string subStr1 = str.substr(7, 5);//获取子串(起始字节,长度 );指定位置

比较字符串

直接用比较运算符,比较两个字符串对象,按字符串靠前的优先比较;

ac比较ab  前面a都相等 第二个字节c大 所以ac大ab

str1 ==str2

str 1!=str2

添加字符串

str1.append("xxx ")//可以多级引用append

搜索字符串

str.find(子串)// 返回搜索到到起始索引

#include <iostream>
#include<string>
int main()
{std::string str;//构建字符串对象std::cout << "请输入一串字符: \n";//   std::cin >> str;std::getline(std::cin,str);std::cout << str<<'\n';std::cout << "Hello World!\n";std::string str1="aaa bbb ccc";std::string str2 = "ccc";std::string str3 = "aaa bbb ccc";std::string st= str1.substr(3,6);//提取第三个元素开始的后6个元素std::cout <<"主串为:"<<str1 << "字串为:" << st<<'\n';if (str1> str2)//比靠前的字符大小{std::cout << str1 << "最大\n";}else{std::cout << str2 << "最大\n";}str3.append("123456");//拼接字符串std::cout << str3;uint16_t t=str1.find(str2);//返回索引值std::cout <<'\n' << t;
}

指针类型08

取地址和c语言一样

int a;

&a;

对齐也是c语言一样,32位系统4字节对齐

指针声明和c语言一样

地址使用和c语言一样  int a  ;int *p=&a;必须同类:  形参使用也是一样;

#include <iostream>int main()
{int a = 1;double b = 2;float c = 3;char d = 4;int *p1 = &a;double *p2 = &b;float *p3 = &c ;char *p4 = &d;std::cout << a<<'\n';std::cout << b << '\n';std::cout << c << '\n';std::cout << d << '\n';*p1 = 5;*p2 = 6;*p3 = 7;*p4 = 8;std::cout << p1 << '\n';std::cout << p2 << '\n';std::cout << p3 << '\n';std::cout << p4 << '\n';std::cout << "Hello World!\n";
}

c++的地址++和c一样;

指针的地址++,指向下一个同类型的数据;

int a【10】 ;

int *p=a;

p++;此时p=&a【1】;

指针++的不是地址+1,而是偏移sizeof(int)个字节偏移量;

10

结构和c的结构体是一样使用的,包括结构指针

11、

形参使用,地址传递,和c一样。

引用特别说明

void aaa ( int *  ,int *  )

{      }

在c++中引用是这样的

int a,b;

aaa ( a  ,b  );

其实传递进去给形参的是地址,等效aaa ( &a  ,&b  );

13联合体、结构体、类型别名

和c语言一样使用,不做描述

struct MyStruct//结构体
{int a;double b;char c;
};
union MyUnion//联合体
{int a;double b;
};
typedef int uint32;//类型别名

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com