2023/9/6 -- C++/QT

一、输出流对象cout

1> 该对象是来自于ostream的类对象,功能上类似于printf函数

2> 该类对象本质上调用成员函数插入运算符重载函数

3> 输出数据时,无需使用格式控制符:%d、%c、%s。。。,直接输出即可

4> 换行使用endl

二、输入流对象cin

1> cin是来自于istream的类对象,用于输入工作,功能上类似于scanf

2> 该类对象输入时,也无需使用格式控制符

3> 输入时,一般也不加endl

三、命名空间

3.1 std命名空间的使用

1> 命名空间必须先定义,后使用

2> 当引入系统提供的头文件时,如果该头文件提供某些名字,那么一定时定义在一个统一的命名空间中,名为std

3> 命名空间使用方式1:在使用该命名空间中的名字时,直接加上命名空间名和作用域限定符,指名道姓的使用某个名字

例如:std::cout

4> 命名空间使用方式2:提前将某个命名空间中的某个名字使用关键字using进行声明,后期对该名字就可以直接使用了,但是,该命名空间中没有提前声明的名字,不能直接使用

5> 命名空间的使用方式3:提前将整个命名空间进行声明,使用关键字 using namespace 命名空间名,声明后,该命名空间中的名字,就可以直接使用了,无需再加命名空间名和作用域限定符了

3.2 命名空间冲突问题

1> 不同的命名空间之间名字冲突问题,需要在产生冲突的名字前加命名空间名和作用域限定符解决

2> 命名空间中的名字与全局名称冲突问题,如果使用命名空间中的名字,需要加上命名空间名和作用域限定符,如果想要使用全局的名字,全局的名字默认放入匿名空间中,使用时只需要加上命名作用域限定符即可

3> 命名空间中的名字与局部名字冲突,优先使用局部的名字,如果非要使用命名空间中的名字,则需要加上命名空间名和作用域限定符

3.3 命名空间使用的注意事项

1> 一个命名空间中可以嵌套定义一个命名空间,使用名字时,需要用作用域限定符一级一级找到最低一级进行使用

2> 同一作用域下,可以定义多个同名的命名空间,编译时会将这对个同名的命名空间合成一个,所以,定义时,不允许出现名字有相同的现象

四、C++中的字符串(string)

4.1 C风格字符串与C++风格字符串互相转换

1> C语言风格的字符串可以无条件转换为C++风格字符串

2> C++风格字符串向C语言风格字符串转换时,需要调用其成员函数c_str()或者data()

#include <iostream> #include<cstring> using namespace std; int main() { char s1[20]; string s2 = "hello"; //s2 = s1; //C语言风格向c++风格字符串转换 //s1 = s2; //C++风格字符串不能直接转换为C风格字符串 //strcpy(s1, s2.c_str()); strcpy(s1, s2.data()); cout<<"s1 = "<<s1<<endl; //hello return 0; }

4.2 字符串的比较

1> C语言风格的字符串比较需要使用strcmp来完成

2> C++风格的字符串比较,不需要使用strcmp函数,直接使用关系运算符即可

4.3 C++风格字符串的常用函数

1> size()、length() :该函数返回字符串的实际长度,不包含'\0'

2> empty(): 判断该字符串是否为空,如果为空串,则返回真,否则返回假

3> clear():将字符串中的内容清空

4> at():返回字符串中给定位置的字符

4.4 字符串的输入输出

1> 如果字符串中没有回车、空格、tab键,则可以直接使用cin完成

2> 如果有空格的输入,需要使用全局函数getline来完成

五、bool类型

1> C语言中不支持bool类型,但是C++中支持bool类型

2> bool类型的值只有两个:true(非0数字)、false(0),这两个关键字,用于bool类型的真和假

3> bool类型的数据,默认使用数字表示真假,如果非要使用单词表示,则需要使用关键字boolalpha来调整

转化后,就一直使用单词表示,如果还想继续使用数字,则需要使用关键字noboolalpha调整

4> bool类型的变量所占内存1字节,本质上只需要1bit即可,但是,内存分配的基本单位是字节

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Command line: -prefix /home/liuyh/workspace/qt5.14.2-arm -opensource -confirm-license -release -strip -shared -xplatform linux-arm-gnueabi-g++ -optimized-qmake -c++std c++11 --rpath=no -pch -skip qt3d -skip qtactiveqt -skip qtandroidextras -skip qtcanvas3d -skip qtconnectivity -skip qtdatavis3d -skip qtdoc -skip qtgamepad -skip qtlocation -skip qtmacextras -skip qtnetworkauth -skip qtpurchasing -skip qtremoteobjects -skip qtscript -skip qtscxml -skip qtsensors -skip qtspeech -skip qtsvg -skip qttools -skip qttranslations -skip qtwayland -skip qtwebengine -skip qtwebview -skip qtwinextras -skip qtx11extras -skip qtxmlpatterns -make libs -make examples -nomake tools -nomake tests -gui -widgets -dbus-runtime --glib=no --iconv=no --pcre=qt --zlib=qt -no-openssl --freetype=qt --harfbuzz=qt -no-opengl -linuxfb --xcb=no -tslib --libpng=qt --libjpeg=qt --sqlite=qt -plugin-sql-sqlite -I/opt/tslib/include -L/opt/tslib/lib -recheck-all executing config test machineTuple + arm-linux-gnueabi-g++ -dumpmachine > sh: 1: arm-linux-gnueabi-g++: not found test config.qtbase.tests.machineTuple FAILED executing config test verifyspec + cd /home/liuyh/workspace/QT5.14.2/qt-everywhere-src-5.14.2/config.tests/verifyspec && /home/liuyh/workspace/QT5.14.2/qt-everywhere-src-5.14.2/qtbase/bin/qmake "CONFIG -= qt debug_and_release app_bundle lib_bundle" "CONFIG += shared warn_off console single_arch" 'QMAKE_LIBDIR += /opt/tslib/lib' 'INCLUDEPATH += /opt/tslib/include' -early "CONFIG += cross_compile" /home/liuyh/workspace/QT5.14.2/qt-everywhere-src-5.14.2/qtbase/config.tests/verifyspec + cd /home/liuyh/workspace/QT5.14.2/qt-everywhere-src-5.14.2/config.tests/verifyspec && MAKEFLAGS= /usr/bin/make clean && MAKEFLAGS= /usr/bin/make > rm -f verifyspec.o > rm -f *~ core *.core > arm-linux-gnueabi-g++ -c -O2 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard -O2 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard -pipe -O2 -w -fPIC -I/home/liuyh/workspace/QT5.14.2/qt-everywhere-src-5.14.2/qtbase/config.tests/verifyspec -I. -I/opt/tslib/include -I/home/liuyh/workspace/QT5.14.2/qt-everywhere-src-5.14.2/qtbase/mkspecs/linux-arm-gnueabi-g++ -o verifyspec.o /home/liuyh/workspace/QT5.14.2/qt-everywhere-src-5.14.2/qtbase/config.tests/verifyspec/verifyspec.cpp > make:arm-linux-gnueabi-g++:命令未找到 > make: *** [Makefile:172:verifyspec.o] 错误 127
06-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值