C++-赋值-string字符串类-函数

赋值

1)通常编程中使用=进行赋值操作,C++增加了一些新的赋值语法。

#include <iostream>using namespace std;int main()
{int a = 1;//普通模式int b(2);//int b=2;int c(a);//int c = a;int d(a+b);//int d=a+b;    cout <<"a=" << a  << " " << &<< endl;
    cout <<"b=" << b << " " << &<< endl;
    cout <<"c=" << c << " " << &<< endl;
    cout <<"d=" << d << " " << &<< endl;return 0;
}

2)在C++11 又进行了升级

#include <iostream>using namespace std;int main()
{int a(1);
    cout << a << endl;double b = 2.42;int c{b};   // 升级:对数据窄化做出警告int d(b);int e = b;    cout << b << endl;
    cout << c << " " << d << endl;return 0;
}

键盘输入

可以使用cin把用户在命令行中输入的内容复制到变量当中。

cin与cout一样,都属于头文件iostream中的标准输入输出流。

#include <iostream>using namespace std;int main()
{// C++ 的字符串是string
    string str;int a = 0;
    cout << "请输入一个字符串和一个数字" << endl;    cin >> str >> a; // 接收键盘输入,不能有空格  空格会结束输入    cout << "您输入的是:" << str << " " << a << endl;return 0;
}

错误输入

string字符串类

string不是C++的基本数据类型,他是一个C++标准库中的字符串类。使用时需要引入头文件#include<string>,而不是string.h

string在绝大多数情况下可以替代C语言中的字符串,不用担心内存是否足够和字符串等等。其中内部还包含了很多字符串处理函数,可以完成各种情况下的字符串处理功能。

string和C语言相同,字符串编码使用ASCII编码,不支持中文。

size()\length() 计算字符串大小

#include <iostream>using namespace std;int main()
{
    string str = "helloworld";
    cout << str.size() << endl; // 10
    cout << str.length() << endl; // 10    cout << str[1] << endl; // e
    cout << str.at(5) << endl; // wreturn 0;
}

at函数:获取字符中某个字符

两种方式都可以,但是在C++当中更推荐使用at函数。原因是at函数更加安全。但是[ ]的方式效率更高。

#include <iostream>using namespace std;int main()
{
    string str = "helloworld";//    cout << str[100] << endl; // 输出一个垃圾数据
//    cout << str.at(100) << endl; // 程序停止运行return 0;
}

string类支持多种遍历方式(for循环)

  • 普通循环(以for循环为主)
  • C++11 for each循环,只能访问集合中的元素,但不能对其中的元素进行修改

#include <iostream>
using namespace std;
int main()
{
    string str = "helloworld";// 以for循环的方式输出字符串for(int i = 0; i < str.length(); ++i){
        cout << str.at(i);}
    cout << endl;// 以 for each的方式进行循环遍历字符串,结构简单,但有局限性//foreach存在局限性,在循环遍历数组集合时,只能访问集合中的元素,但不能对其中的元素进行修改for(char i:str){
        cout << i;}return 0;
}

5函数

1 内联函数 inline

内联函数用于取代C语言中宏定义的函数,内联函数的正确使用可以提升程序的执行效率。内联函数在编译的时候,直接把函数体展开到主函数中遍历,在运行期间可以减少调用的开销。

通常将具有以下性质的函数写为内联函数:

  • 代码长度5行以内
  • 不包含复杂的控制语句
  • 频繁被调用

内联函数关键字:inline

#include <iostream>using namespace std;inline void print_string(string s)
{
    cout << s << endl;
}int main()
{print_string("hello");return 0;
}

后续学的成员函数默认添加inline关键字修饰。

我们添加的inline关键字,将函数声明为内联函数。这个不是我们能决定的。编译器有自己的判断准则,我们只是给编译器提一个建议。具体是否能变成内联函数,还是编译器自己决定的。

2 函数重载 overload

C++中允许多个函数使用同一个名称,这种用法就是函数重载。函数重载要求函数名称相同,但是参数不同(类型或者数量)或者前后顺序不同。与返回值 等其他因素无关。

相同优先级也会有二异性,如:int、float同级

#include <iostream>using namespace std;void print_show(int i)
{
    cout << "调用了int重载:" << i << endl;
}void print_show(string str)
{
    cout << "调用了string重载:" << str << endl;
}// 错误,与返回值类型无关(二义性错误)
//int print_show(int i)
//{
//    cout << "调用了int重载2:" << i << endl;
//    return i;
//}void print_show(float f)
{
    cout << "调用float类型重载:"<< f << endl;
}void print_show(double d)
{
    cout << "调用double类型重载:"<< d << endl;
}int main()
{print_show(2);return 0;
}

3 哑元函数

函数的参数只有类型,没有名称

#include <iostream>using namespace std;void print_show(int a,int)
{
    cout << "调用:"<< a << endl;
}int main()
{print_show(2,4);return 0;
}

作用1:“哑元函数用来区分函数重载”

作用2:运算符重载中会用到 1

#include <iostream>using namespace std;void print_show(int a,int)
{
    cout << "调用1:"<< a << endl;
}void print_show(int a)
{
    cout << "调用2:"<< a << endl;
}int main()
{print_show(2);return 0;
}

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

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

相关文章

如何下载和安装 Eclipse?

1.进入官网。Eclipse的官网地址为https://www.eclipse.org/。 2.在官网首页&#xff0c;点击“Download”按钮进入下载界面。 3.查找自己需要的 Eclipse 对应的版本。Eclipse有着多个版本&#xff0c;每个版本都有自己特定的用途和功能&#xff0c;主要包括以下版本&#xff1…

JSON网络令牌JWT

1.什么是身份验证 日常生活中的身份验证的场景: 比如进入公司的大楼时&#xff0c;需要携带工牌&#xff1b;打卡上班时&#xff0c;需要指纹识别&#xff1b;打开工作电脑时&#xff0c;需要输入密码。 2. 什么是 JSON 网络令牌&#xff1f; JSON Web Token (JWT) 是一个开…

PostgreSQL 分区

由于大量数据存储在数据库同一张表中&#xff0c;后期性能和扩展会受到影响。所以需要进行表分区&#xff0c;因为它可以将大表分成较小的表&#xff0c;从而减少内存交换问题和表扫描&#xff0c;最终提高性能。庞大的数据集被分成更小的分区&#xff0c;更易于访问和管理。 …

【设计模式之美】面向对象分析方法论与实现(二):需求到接口实现的方法论

文章目录 一. 进行面向对象设计1. 划分职责>需要有哪些类2. 定义类及其属性和方法3. 定义类与类之间的交互关系4. 将类组装起来并提供执行入口 二. 如何进行面向对象编程&#xff1f;1. 接口实现2. 辩证思考与灵活应用 【设计模式之美】面向对象分析方法论与实现&#xff08…

(vue)el-popover鼠标移入提示效果

(vue)el-popover鼠标移入提示效果 效果&#xff1a; 代码&#xff1a; <el-form-itemv-for"(item,index) of ele.algorithmParameters":key"index":label"item.parametersName"class"descInput" ><el-input v-model"i…

linux centos 添加临时ip

### 1.添加ip ip addr add IP/mask dev 网络设备 例&#xff1a;ip addr add 172.104.210.247/24 dev ens5f1 ### 2.启动网卡 ip link set up 网络设备 例&#xff1a;ip link set up ens3f0 ### 3.设置默认路由 ip route add default via GATEWAY 例&#xff1a;ip route add …

Eureka服务端

一般我们Server端会像下图一样&#xff0c;引入Eureka&#xff0c;下面就通过这个来分析Eureka服务端源码流程 一、服务端配置 EnableEurekaServer会引入EurekaServerMarkerConfiguration类 EurekaSeverMarkerConfiguration最终会引入Marker对象&#xff0c;这就是一个标记…

JavaScript中location对象使用【详解】

✨前言✨   本篇文章主要在于&#xff0c;了解并会使用JavaScript中location对象 &#x1f352;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f352;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评论区留言 &…

CNN——AlexNet

1.AlexNet概述 论文原文&#xff1a;ImageNet Classification with Deep Convolutional Neural Networks 在LeNet提出后&#xff0c;卷积神经网络在计算机视觉和机器学习领域中很有名气。但卷积神经网络并没有主导这些领域。这是因为虽然LeNet在小数据集上取得了很好的效果&am…

二叉树链式结构的实现(二叉树的遍历以及各种常用功能函数的实现)

之前也是把堆部分的知识点梳理完毕&#xff08;即二叉树链式顺序的实现&#xff09;&#xff1a;堆的应用&#xff1a;堆排序和TOP-K问题 那么讲完了二叉树链式结构的实现。今天就进入二叉树链式结构的实现&#xff1a; 文章目录 1.准备工作2.二叉树的遍历2.1前序遍历2.2中序遍…

【C语言】程序练习(四)

大家好&#xff0c;这里是争做图书馆扫地僧的小白。非常感谢各位的支持&#xff0c;也期待着您的关注。 目前博主有着C语言、C、linux以及数据结构的专栏&#xff0c;内容正在逐步的更新。 希望对各位朋友有所帮助同时也期望可以得到各位的支持&#xff0c;有任何问题欢迎私信与…

数学公式编译器MathType下载与安装

下载网址&#xff1a;下载 MathType - WIRIS Store 1.点击【下载MathType for Windows】 2、点击中文版 3.找到所下载的目录&#xff1a; 右击-->以管理员身份运行 4、新建word文档 点击文件->账户->关于word 5.点击【文件】、【选项】&#xff0c;❶点击【加载项】…