首页 > 编程语言 >c++ 快速复习第一部份

c++ 快速复习第一部份

时间:2024-04-28 23:24:10浏览次数:29  
标签:std 字符 复习 第一部 int c++ long 类型 include

去年有事无事学过一c++ ,,由于工作用不上,学来没有用,所以学得乱七八的,最近需要复习一下,因为最近想学习一下硬 件相关

第一   引用头文件和自定义头

#include <iostream>
using namespace std;   //引用命名空间可以避免使用::语法
int main()
{
默认输出写法:std::cout << "Hello, world!" << std::endl;
cout << "Hello World!" << endl;
return 0;
}
使用建议 对于小型代码或示例代码,使用 using namespace std; 通常是安全的。对于大型项目或库,建议显式地使用 std:: 前缀,以避免潜在的名称冲突,并提高代码的可读性 和可维护性。std 命名空间是 C++ 编程的基础部分,理解和正确使用它对于编写健壮和高效的 C++ 代码至关重要。 

常见第三方库

std包含的内容
std 命名空间包含了许多类、函数和对象,例如:
输入输出库(如 std::cout , std::cin , std::endl )
容器类(如 std::vector , std::map , std::set )
字符串类( std::string )
异常类( std::exception 和相关子类)
算法(如 std::sort , std::find )
实用工具(如 std::pair , std::tuple )

自定义库,新建一上h 文件

#ifndef CIR_H
#define CIR_H
namespace Cir {
const double PI = 3.141592653;
double areaOfCircle(double radius){
return PI*radius*radius;
}
double lenthOfCircle(double radius){
return 2*PI*radius;
}
}
#endif // CIR_H

然后主类引用,总结就是可能把一些类的定义写在别的文件,主类写逻辑

#include "cir.h"
#include <stdio.h>
int main()
{
double radius = 5;
printf("半径为%f的圆,周长为%f,面积为%f\n",
radius,Cir::lenthOfCircle(radius), Cir::areaOfCircle(radius));
return 0;
}
在 C++ 中, <climits> (或在 C 中是 <limits.h> )是一个标准头文件,提供了关于整型限制的信息。这个头文件中定义了各种整型数据类型的属性,如最大值、最小值等。使用这些信息可以帮助你了
解在特定编译器和平台上各种数据类型的大小和范围。
如何使用 <climits> 要使用 <climits> 中定义的常量,你首先需要包含这个头文件: #include <climits> 然后,你可以使用它提供的各种常量,例如: INT_MAX : int 类型的最大值。 INT_MIN : int 类型的最小值。 UINT_MAX : unsigned int 类型的最大值。 LONG_MAX : long int 类型的最大值。 LONG_MIN : long int 类型的最小值。 LLONG_MAX : long long int 类型的最大值。 LLONG_MIN : long long int 类型的最小值。 示例代码 下面是一个简单的示例,展示了如何使用 <climits> 中的值: #include <iostream> #include <climits> int main() { std::cout << "The range of int is from " << INT_MIN << " to " << INT_MAX << std::endl; std::cout << "The maximum value of unsigned int is " << UINT_MAX << std::endl; std::cout << "The range of long long is from " << LLONG_MIN << " to " << LLONG_MAX << std::endl; return 0; } 这个程序会输出 int 、 unsigned int 和 long long int 类型的最大值和最小值。 注意事项 <climits> 提供的是编译时确定的常量,这意味着这些值在编译时就已经固定,根据编译器和平台 的不同而可能有所不同。 使用这些限制值可以帮助你编写更可移植和安全的代码,特别是在处理可能超出数据类型范围的操 作时

 

基础部份,系统常见输入输出语法  

cin 用于从标准输入(通常是键盘)读取数据。
cout 用于将数据输出到标准输出(通常是屏幕)。
#include<iostream>

int main() {
    int number;
    std::cout << "Enter a number: ";
    std::cin >> number;
    std::cout << "You entered: "<< number<< std::endl;
    return 0;
}

  

cerr 用于输出错误消息和调试信息。 
#include<iostream>

int main() {
    std::cerr << "An error occurred!"<< std::endl;
    return 1;
}

 clog 用于记录错误和日志信息。

#include<iostream>

int main() {
    std::clog << "An error occurred!"<< std::endl;
    return 1;
}

  ifstream 用于从文件读取数据。 ofstream 用于将数据写入文件。

#include<iostream>
#include<fstream>
#include<string>

int main() {
    std::ifstream file("example.txt");
    std::string line;

    if (file.is_open()) {
        while (std::getline(file, line)) {
            std::cout<< line<< std::endl;
        }
        file.close();
    } else {
        std::cerr << "Unable to open file"<< std::endl;
    }

    return 0;
}

  

 基础数据类型 

C++ 的基础类型主要包括以下几类:
整型(Integer Types)
int8_t 或 signed char: 8位有符号整数
uint8_t 或 unsigned char: 8位无符号整数
int16_t 或 signed short: 16位有符号整数
uint16_t 或 unsigned short: 16位无符号整数
int32_t 或 signed int: 32位有符号整数
uint32_t 或 unsigned int: 32位无符号整数
int64_t 或 signed long long: 64位有符号整数
uint64_t 或 unsigned long long: 64位无符号整数
此外,还有 short, int, long, long long,但这些类型的大小取决于具体的编译器和平台。
浮点型(Floating-Point Types)
float: 单精度浮点数
double: 双精度浮点数
long double: 扩展的双精度浮点数(精度和范围可能因编译器和平台而异)
字符型(Character Types)
char: 字符类型,可以是有符号的或无符号的,取决于编译器和平台。
wchar_t: 宽字符类型,用于支持多字节字符集,如Unicode。
char8_t (C++20起): 用于UTF-8编码的字符。
char16_t: 用于UTF-16编码的字符。
char32_t: 用于UTF-32编码的字符。
布尔型(Boolean Types)
bool: 布尔类型,可以表示真(true)或假(false)。
空类型(Void Type)
void: 表示没有类型,通常用于函数返回类型,表示该函数不返回任何值。
复合类型(Compound Types)(这些不是基础类型,但经常与基础类型一起使用)
数组(Array)
结构体(Struct)
联合体(Union)
枚举(Enumeration)
指针(Pointer)等。
需要注意的是,C++ 标准并没有严格规定某些类型(如 int, long 等)的具体大小,这取决于编译器和目标平台。为了编写可移植的代码,通常建议使用固定宽度的整数类型(如 int32_t)或基于特定需求的类型别名。
另外,C++11 及其后续版本引入了一些新的类型别名和关键字,如 nullptr_t(用于表示空指针的类型),以及用于表示特定大小的整数类型的别名(如 int8_t, uint16_t 等)。这些都在 <cstdint> 或 <stdint.h> 头文件中定义。

  

数据类型	描述	位数 (通常情况下)	用途
int	整型	至少 16 位	一般的整数运算
short int	短整型	至少 16 位	较小范围的整数,节省空间
long int	长整型	至少 32 位	较大范围的整数运算
long long	更长的整型	至少 64位	处理非常大的整数
unsigned int	无符号整型	同 int,通常为32 位	只能为正数的整数运算
float	单精度浮点类型	32 位	需要小数点的数值运算,精度较低
double	双精度浮点类型	64 位	需要高精度的数值运算
float单精度浮点类型32 位存储小数,精度约为6-7位有效数字
double双精度浮点类型64 位存储小数,提供更高的精度和范围
long double扩展精度浮点类型80 位或更多提供比double更高的精度和范围
char字符型8 位存储单个字符或作为小整数使用unsigned
char
无符号字符型8 位存储无符号的单个字符或数值signed
char
有符号字符型8 位存储有符号的单个字符或数值
bool布尔型通常由编译器决定存储逻辑值(真/假
wchar_t宽字符类型通常为16位或32位存储宽字符,用于支持多语言 注意:这里的位数是“至少”的要求,实际实现中可能会更多,具体取决于编译器和平台。例如,现代的64位系统中,int通常是32位的,而long int可能是64位的。另外
“用途”一栏是简要描述,实际应用中这些类型的用途可能更加多样和复杂。 最后,请注意,“釐靼覽裉精度浮点类型”似乎是一个输入错误或乱码,我假设你指的是“单精度浮点类型”,所以在上面的表格中我进行了更正。如果这不是你的意思,请提供更多信息以便进行准确的修正。
宽字符的用法
#include <iostream>
#include <locale>
#include <wchar.h>
int main() {
// 设置本地化以支持宽字符
std::setlocale(LC_ALL, "");
// 使用 wchar_t 类型定义一个宽字符串
wchar_t wstr[] = L"你好,世界!";
// 在 C++ 中打印宽字符串
std::wcout << wstr << std::endl;
return 0;
}

宽字符影起mysql建表消失

通过某种方式(如命令行或数据库开发工具等)在数据库 test 中创建了一个名为 lang 的表。表结构如下:
CREATE TABLE `lang` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
通过 SHOW TABLES; 命令,我们可以确认这个表的存在。
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| a1             |
| lang          |
| t1             |
| z1             |
+----------------+
4 rows in set (0.00 sec)
但是,当你尝试在 MySQL 客户端执行 SELECT * FROM lang; 查询或者业务程序去连接该表时,却收到了错误信息:

mysql> select * from lang;
ERROR 1146 (42S02): Table 'test.lang' doesn't exist
表就这么神奇的消失了。
3原因分析
像见了鬼一样,即使反复多次手动输入查询语法,也无法查询到这个表。我们将建表语句复制到 Sublime Text 文本工具中:

图片

 

此时,我们发现了问题:表名后面跟了一个“<0×200b>”的字符。这就是零宽空格,是零宽字符的一种。

  

解决宽字符带来的问题:
零宽字符是一种特殊的 Unicode 字符,它不占用任何可见空间,因此在大多数情况下是不可见的。然而,它们可以存在于文本中,并且可能对计算机程序产生影响,包括数据库管理系统。在 Unicode 中,U+200B 代表零宽空格,
常用于可能需要换行的地方。除此之外,还有其他零宽字符,这里不再赘述。 那么,这像幽灵一样的字符为何会存在? 所谓存在即合理,零宽字符常常被用于数据防爬、信息加密传递、防止敏感词扫描等场景。但在数据库系统里使用,有时候就会出现让人头疼的现象,本文提到的就是其中之一。
这些字符虽然不占用任何空间,但可能会破坏 SQL 命令的正确结构,导致后续使用出错。 如何解决? 在创建表之前,将建表语句复制到多个文本编辑工具,检查是否有异常符号提示(一般文本工具可能无法显示零宽字符)。经过尝试 Sublime Text、Visual Studio Code 等工具或插件有提醒零宽字符的功能;
还有一些在线网页工具可以查看 Unicode 字符的功能。如果你知道其他能够展示零宽字符的工具,欢迎在评论区留言分享。 在创建表之后,使用 SHOW CREATE TABLE; 命令查看表结构,然后将输出结果复制到上述文本编辑工具中,检查是否有异常符号。 经过多次测试发现,在 MySQL 客户端上执行了 SHOW TABLES; 命令时,含有零宽空格的表名后面的边框线 “|” 与其他行是不对齐的。这可以快速发现问题表,
但并不显示具体字符。当然这方式一般不适用于第三方开发工具、业务程序等。

  

 

 

标签:std,字符,复习,第一部,int,c++,long,类型,include
From: https://www.cnblogs.com/ZzwWan/p/18164516

相关文章

  • C++ 异常处理机制详解:轻松掌握异常处理技巧
    C++异常处理C++异常处理机制允许程序在运行时处理错误或意外情况。它提供了捕获和处理错误的一种结构化方式,使程序更加健壮和可靠。异常处理的基本概念:异常:程序在运行时发生的错误或意外情况。抛出异常:使用throw关键字将异常传递给调用堆栈。捕获异常:使用try-cat......
  • C++编程英语词汇
    abstract抽象的abstraction抽象性、抽象件access访问accesslevel访问级别accessfunction访问函数adapter适配器address地址address-ofoperator取地址操作符aggregation聚合algorithm算法allocate分配allocator分配器application应用程序architecture体系结构argu......
  • C++多态与虚拟:Objects 实例化(Objects Instantiation)探究
    一、Objects的创建依据已有的classCPoint,我们可以产生一个或多个object(对象),或者说是产生一个instance(实体):CPointaPoint(7.2);//aPoint._x初始值为7.2aPoint.x(5.3);//aPoint._x现值为5.3这样的objects可能放在函数的stack之中(对象是在函数内部创建的,......
  • Installation requirements for SAP Kernels on Windows (C++ runtime environment, V
      Symptom在Windows执行StartSAP,报错信息找不到指定的模块:"Theprogramcan'tstartbecausemsvcr100.dllismissingfromyourcomputer.""无法启动此程序,因为计算机中丢失了msvcr100.dll。尝试重新安装该程序以解决此问题。" OtherTermsC,C++,runtime,VCred......
  • C++火车头
    点击查看火车头#pragmaGCCoptimize(3)#pragmaGCCtarget("avx")#pragmaGCCoptimize("Ofast")#pragmaGCCoptimize("inline")#pragmaGCCoptimize("-fgcse")#pragmaGCCoptimize("-fgcse-lm")#pragmaGCCoptimize(......
  • C/C++:new/delete与malloc/free的区别
    `new`和`delete`是C++中的关键字,而`malloc()`和`free()`是C语言中的函数。它们在内存分配和释放方面有几个重要区别:1.**类型安全性**:-`new`和`delete`是C++中的运算符,它们会自动计算所需的内存大小,并返回正确类型的指针。这意味着你不需要在使用时显式指定......
  • Java_web的复习之maven
    Apachemaven是一个项目管理和构建工具,它基于项目对象管理模型的概念,通过一小段描述信息来管理项目的构建2.作用:方便的依赖管理统一的项目结构标准的项目构建流程3.通过maven中的各种各样的插件,我们就可以完成对应的功能例如通过编译插件就可以对项目进行编译,通过测试插件......
  • lib 安装失败,error Microsoft Visual C++ 14.0 is required.
    即使安装c++要占用c盘4G,而且仍然有可能报错,error:command'C:\ProgramFiles(x86)\MicrosoftVisualStudio14.0\VC\BIN\x86_amd64\cl.exe'failedwithexitstatus2另一种解决方法是直接下载whl,省去编译的过程https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib有可能......
  • python C++混合编程环境搭建
    一、python环境1.下载python安装包2.安装python(选择下载符号文件和二进制文件)注:多半会报错“Error0x80072f7d:FailedtosendrequesttoURL:……”,因为下载超时导致安装失败解决:1)手动下载core_pdb.msi等文件https://www.python.org/ftp/python/3.8.0/win32/(选择......
  • ROS2学习--POP方法编写C++节点 debug过程
    一、编写C++节点并测试 1.创建功能包C++功能包使用ament-camke作为编译基础,依赖为rclcpp。打开终端,进入town_ws/src运行下面的指令,目录结构如下ros2pkgcreatevillage_wang--build-typeament_cmake--dependenciesrclcpp2.创建节点village_wang/src下创建一个wang2.cp......