C++和QT

什么是QT

Qt 是一个跨平台的 C++图形用户界面应用程序框架。

它为应用程序开发者提供建立艺术级图形界面所需的所有功能。

它是完全面向对象的,很容易扩展,并且允许真正的组件编程。

QT的优点

跨平台,几乎支持所有的平台

接口简单,容易上手,学习 QT 框架对学习其他框架有参考意义。一定程度上简化了内存回收机制

开发效率高,能够快速的构建应用程序。

有很好的社区氛图,市场份额在缓慢上升。

可以进行嵌入式开发。

C++

C++是C语言的拓充,C++包含C的所有属性,C语言的语法在C++中都合法

C编程思想:面向过程(强调执行过程)

C++编程思想:面向对象(半面向过程,半面向对象)

C++中一切皆对象

C++中类的三大属性:封装,继承,多态

C++对C的兼容

c语言文件:XXX.c 编译c文件:gcc XXX.c -o

C++文件:XXX.cpp 编译C++文件:g++ XXX.cpp -o

c语言头文件: eg #include

C++头文件: eg #include

C++的输入输出

cout(输出类的类对象 )

cout具有输出功能,能够自动识别数据类型,不需要加格式符(%s,%d等)。

<<:插入符(输出符)

endl:换行(\n)

cin(输入类的类对象 )

>>:提取符(输入符)

数据类型

C++的数据类型:基本数据类型,构造数据类型

基本数据类型:int,char,short,float,double,long,bool,string

构造数据类型:数组,指针,结构体,共用体,枚举,类

布尔类型(bool)

bool:true==1,false==0

boolalpha(类型)

C++中的字符串string

C语言中存储字符串,使用字符数组或者字符指针指向。

C++依然可以使用字符数组存储字符串,除此之外可以使用string存储字符串。

字符串的赋值和初始化

复制代码
    string str1;
    string str2 = "hello";  //初始化
    cout << "str2 = " << str2 << endl;
    string str3 = str2;  //初始化
    cout << "str3 = " << str3 << endl;
    string str4(str3);   //等价于 string str4 = str3; 拷贝构造函数
    cout << "str4 = " << str4 << endl;
    string str5(str2,3);   //从下标位3的地方开始赋值
    string str6(8,'m');   //赋值8个m
    cout << "str6 = " << str6 << endl;

    char *p = (char *)"hello";  //C++中又字符串类型变量所以不能直接用char*来指向字符串,需要强转

C++字符串的比较

由于C++中有字符串类型的变量,所以字符串之间的比较,就和基本数据类型之间比较由于,借助于关系运算符直接比较即可。

复制代码
  string name = "admin", password = "111";
    string username,userpassword;
    cout << "请输入账号密码:" << endl;
    cin >> username >> userpassword;
    if(username == name && userpassword == password)
    {
        cout << "登录成功!" << endl;
    }
    else
    {
        cout << "登录失败!" << endl;
    }

字符串中常用的函数

size():字符串的大小,元素个数

empty():判空,如果字符串为空,返回true,否则返回false

capacity():容量的大小,容量的大小>= 元素个数

C++字符串和C语言字符串的风格互换

C语言的字符串可以直接转换成C++风格的字符串

C++风格的字符串不能直接转换成C风格的字符串,需要使用c_str()进行转换

字符串的元素访问

\] 小标访问元素 ----\>不判断是否越界 at() 访问元素 ----\>判断是否越界 string str2 = "abc"; cout << str2[2] << endl; cout << str2[6] << endl; cout << str2.at(2) << endl; cout << str2.at(6) << endl; ***字符串的输入*** C++的字符串的输入默认以空格结束 getline(cin,str);//吸收空格 string name; getline(cin,name); cout << name << endl; ***数组array*** C++中的数组可以使用array这个容器完成,需要包含头文件#inlude //定义一个数组 array a;//int a[5] //::--->作用域限定符,iterator--->迭代器==指针 array ::iterator iter; //begin():第一个元素的地址 //end():最后一个元素的下一个元素的地址 for(iter = a.begin();iter != a.end();iter++) { cin >> *iter; } for(iter = a.begin();iter != a.end();iter++) { cout << *iter < #include #include #include //iostream:标准输入输出流 //使用命名空间的方式3: using namespace std; //using:使用命名空间的关键字 //namespace:命名空间的关键字 //std:标注的命名空间 //使用命名空间的方式2:声明使用命名空间中的某个名字,后期都可以直接使用,其他名字依旧要加上命名空间名和作用域限定符 using std::cout; int main() { //使用命名空间的方式1:使用某个名字,将命名空间和作用域限定符加上 std::cout << "hello world!" << std::endl; //使用命名空间的方式2: cout << "hello world!" << std::endl; //使用命名空间的方式3: cout << "hello world!" << std::endl; return 0; } ***自定义命名空间*** 格式: namespace 命名空间名(一般首字母) { 数据类型 变量1; 数据类型 变量2; 数据类型 变量3; 。。。 数据类型 变量n; } #include using namespace std; //自定义命名空间 namespace Zhangsan { int cuihua; namespace Xiaosan //自定的命名空间可嵌套 { int cuihua; //一级一级的找 } } namespace Zhangsan //可以在同一个作用域下,定义相同的命名空间名 相当于合并 { //int cuihua;重复定义 int a; int b; } namespace Lisi { int cuihua; namespace Xiaosan //自定的命名空间可嵌套 { int cuihua; //一级一级的找 } } using Zhangsan::cuihua; int main() { // Zhangsan::cuihua = 19; // Lisi::cuihua = 39; cuihua = 19; Zhangsan::Xiaosan::cuihua = 78; return 0; } ## 练习 提示并输入一个字符串,统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数 要求使用C++风格字符串完成 #include #include #include #include using namespace std; int main() { cout << "请输入一个字符串" << endl; string a; getline(cin,a); int len = a.size(); int caps = 0,small = 0,count = 0,space = 0,other = 0; for(int i= 0;i= 'A' && a[i] <= 'Z') { caps++; } else if(a[i] >= 'a' && a[i] <= 'z') { small++; } else if(a[i] >= '0' && a[i] <= '9') { count++; } else if(a[i] == ' ') { space++; } else { other++; } } cout << "大写字符:" << caps << endl; cout << "小写字符:" << small << endl; cout << "数字:" << count << endl; cout << "空格:" << space << endl; cout << "其他字符:" << other << endl; return 0; } ![](https://img-blog.csdnimg.cn/img_convert/c5d668c6a253c91dc41485d70744c514.png)

相关推荐
刚入门的大一新生19 分钟前
C++初阶-C++入门基础
开发语言·c++
你是理想25 分钟前
wait 和notify ,notifyAll,sleep
java·开发语言·jvm
forestsea44 分钟前
Python进阶编程总结
开发语言·python·notepad++
q567315231 小时前
使用Java的HttpClient实现文件下载器
java·开发语言·爬虫·scrapy
weixin_428498491 小时前
Visual Studio 中使用 Clang 作为 C/C++ 编译器时,设置优化选项方法
c语言·c++·visual studio
菜鸡中的奋斗鸡→挣扎鸡2 小时前
第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组
c语言·c++·蓝桥杯
六bring个六2 小时前
QT上位机笔记
开发语言·笔记·qt
步木木2 小时前
Qt 5.14.2入门(一)写个Hello Qt!程序
开发语言·qt
techdashen2 小时前
Rust主流框架性能比拼: Actix vs Axum vs Rocket
开发语言·后端·rust
普通网友2 小时前
内置AI与浏览器的开源终端Wave Terminal安装与远程连接内网服务器教程
开发语言·后端·golang