码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C++从头捡起——2. 零散的知识


    文章目录

    • 1. typename和using
    • 2. 从txt文本里读取自定义的struct变量
    • 3. STL的vector
    • 4. 跨平台
      • 4.0 C++标准数据类型数据范围
      • 4.1 标准数据类型名称
      • 4.2 visual studio程序跨平台运行
    • 5. 通用功能代码片段
      • 5.1 argv接受命令行传递参数
        • 5.1.1 visual studio中设置命令行传递的参数
      • 5.2 测量某段C++代码执行时间
      • 5.3 C++终止程序执行的库函数
      • 5.4 C++中bool转int
    • 6. C++风格指南/开发规范
      • 6.1 文字版
      • 6.2 代码加注释的配图
      • 6.3 一些说明
    • 其它
      • C++在线编辑器

    1. typename和using

    参考:

    • using, typename的用法, typedef、using, remove_cv,void_t
    • 在C++中,using声明语句=后面的typename起什么作用?
    • Using typename的理解

    2. 从txt文本里读取自定义的struct变量

    参考:

    • Reading file into array of struct c++
      • example
    • c plus plus网站:
      • 函数定义:https://cplusplus.com/reference/fstream/ifstream/
      • 函数示例:https://cplusplus.com/doc/tutorial/files/

    传递结构体作为函数参数

    • C++中结构体作为函数参数的使用

    3. STL的vector

    参考:

    • CSDN博客:std::vector使用简介
    • c中文网:C++ STL vector添加元素(push_back()和emplace_back())详解

    4. 跨平台

    4.0 C++标准数据类型数据范围

    数据类型存储空间/字节数取值范围
    char1字节默认-128 到 127 ,编译时使用/j则是0 到 255
    unsigned char1字节0 到 255
    signed char1字节-128 到 127
    int4 字节-2147483648 到 2147483647
    unsigned int4 字节0 到 4294967295
    signed int4字节-2147483648 到 2147483647
    short 别名:short int/signed short int2 字节-32768 到 32767
    unsigned short int2 字节0 到 65,535
    float4 字节精度型占4个字节(32位)内存空间,+/- 3.4e +/- 38 (~7 个数字)
    double8 字节双精度型占8 个字节(64位)内存空间,+/- 1.7e +/- 308 (~15 个数字)

    参考:

    • 菜鸟教程:C++ 数据类型
      • 上面的部分内容翻译自:Data Type Ranges
    • 类似于菜鸟教程的网站还有:
      • C++ Data Types
      • geeksforgeeks: C++ Data Types

    4.1 标准数据类型名称

    可以在visual studio中对类似uint8_t的标识符进行右击,就会跳转到stdint.h这个头文件中,就会看到类似于下面的代码

    #include 
    typedef signed char        int8_t;
    typedef short              int16_t;
    typedef int                int32_t;
    typedef long long          int64_t;
    typedef unsigned char      uint8_t;
    typedef unsigned short     uint16_t;
    typedef unsigned int       uint32_t;
    typedef unsigned long long uint64_t;
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    其中,关于unsigned char,不太有印象的可以看看

    • 百度百科——unsigned char
    • 百度百科-char

    参考:

    • C++规范:Fixed width integer types (since C++11)
    • CSDN博客:int8_t、int16_t、int32_t、int64_t、uint8_t、size_t、ssize_t区别
    • 知乎文章:C语言尽量使用int8_t int64_t等数据类型

    4.2 visual studio程序跨平台运行

    常规情况下,visual studio写的程序都是在windows上编译的。

    但是感谢如何使用Visual Studio 2017作为Linux C++开发工具

    • 我以前以为visual studio可以直接选择linux的编译环境
    • 但是其实都是连接远程linux环境进行调试的
    • 具体使用需要进行一些配置。

    详见:

    • 如何使用Visual Studio 2017作为Linux C++开发工具
    • Visual C++ for Linux Development with CMake

    5. 通用功能代码片段

    之前就觉得python添加参数/配置就挺麻烦的,现在看来,C++更麻烦,哈哈哈。

    5.1 argv接受命令行传递参数

    5.1.1 visual studio中设置命令行传递的参数

    根据在VS中向命令行添加参数的方法

    右击项目,选择属性,找到配置属性->调试,在命令参数中添加要传递的args参数
    在这里插入图片描述

    参考:

    • stackoverflow:Use command line arguments argv to create data file with the same name
    • 一个C编程教学系列网站:Command line arguments in C++ using argc and argv

    5.2 测量某段C++代码执行时间

    参考:

    • geeksforgeeks:Measure execution time of a function in C++
    • stackoverflow:Measuring execution time of a function in C++
    • stackoverflow:How to Calculate Execution Time of a Code Snippet in C++
    • 8 Ways to Measure Execution Time in C/C++
    • 知乎:测量程序运行时间(C++篇)

    5.3 C++终止程序执行的库函数

    示例:

    #include 
    using namespace std;
    main() {
       bool my_bool;
       my_bool = true;
       cout << "The int equivalent of my_bool is: " << int(my_bool) << endl;
       my_bool = false;
       cout << "The int equivalent of my_bool is: " << int(my_bool);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    输出:

    The int equivalent of my_bool is: 1
    The int equivalent of my_bool is: 0
    
    • 1
    • 2

    参考:

    • CSDN博客:C++终止程序执行的三个函数

    5.4 C++中bool转int

    参考:

    • Bool to int conversion in C++

    6. C++风格指南/开发规范

    6.1 文字版

    一般都用Google的C++开发规范:

    • 英语原文链接:Google C++ Style Guide
    • 中文在线文档:Google 开源项目风格指南——中文版
    • 离线pdf文档:Google 开源项目风格指南(中文版v0.3)

    还有一些精简版的C++开发规范:

    • Google C++编码规范学习
    • 关于代码风格,个人推荐Google C++ Style Guide

    6.2 代码加注释的配图

    除了这种文字说明,还找到了一个非常贴心的格式说明,直接一张图,代码旁边标注,非常清晰。

    感谢一张图总结Google C++编程规范(Google C++ Style Guide)

    img

    6.3 一些说明

    文件

    1. 编码是UTF8
    2. LineEnd是LF,文件批量修改用dos2unix

    其中关于第2点的说明,可以参考:

    • 知乎问题:为什么大多开源项目的.editorconfig总是设置end_of_line=lf而不是 crlf?
    • CSDN文章:关于脚本文件(文本文件)的 Line Endings

    其它

    C++在线编辑器

    有时候想快速测试某段代码,可以直接用在线版本。感谢

    推荐10个好用的C++在线编译器,去网吧学习不用配置环境了

    我就记住这一个就行

    • https://www.cainiaojc.com/tool/cpp/
    • https://cppinsights.io/ (不太会用,std::out东西出不来)
  • 相关阅读:
    MyBatis特殊SQL的执行(模糊查询、批量删除、动态设置表名、添加功能获取自增的主键)
    error_ Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“_ h
    SCT52240STDR,SCT52240MTER,SCT52240QSTDR,SCT52240QMTER,栅极驱动器
    当promise遇上generator该如何应对?记一次工作中遇到的问题
    VisionTransformer(ViT)详细架构图
    【VS Code 神奇小插件】Code Runner
    扬帆志远:shopee产品上传不了的原因
    【PDF密码】PDF文件打开之后不能打印,怎么解决?
    跨境电商独立站海外引流渠道:Quora运营技巧
    Maven Wrapper 之 SpringBoot 项目下的 mvnw.cmd
  • 原文地址:https://blog.csdn.net/Castlehe/article/details/125714750
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号