当前位置: 首页 > news >正文

C++ 编程基础:注释、字符串、输入输出、日期处理、修饰符

文章目录

  • 注释
    • 单行注释
    • 多行注释
  • 字符串
    • C 风格字符串
    • std::string 类
  • 基本的输入输出
    • 输出操作
    • 输入操作
    • 输入输出格式控制
  • 日期处理
    • 获取当前时间
    • 日期和时间的格式化输出
  • 修饰符
    • const 修饰符
    • volatile 修饰符
    • static 修饰符
    • extern 修饰符
    • 流操作符修饰符
      • 格式控制修饰符

C++ 作为一门广泛应用的编程语言,掌握其基础的语法元素和操作对于初学者而言至关重要。在本篇博客中,我们将深入探讨 C++ 中的注释、字符串、基本的输入输出操作以及日期处理,通过详细的讲解和丰富的代码示例,帮助大家更好地理解和运用这些知识。

注释

在 C++ 编程里,注释是一种极为有用的工具,它能够提升代码的可读性与可维护性。注释并不会被编译器编译,其主要作用是为开发者提供代码的相关说明和解释。

C++ 支持两种类型的注释:单行注释和多行注释。

单行注释

单行注释以 // 开头,从 // 开始到该行结束的所有内容都会被视为注释。以下是一个简单的示例:

#include <iostream>
// 这是一个单行注释,用于输出欢迎信息
int main() {
    std::cout << "Welcome to C++ programming!" << std::endl;
    return 0;
}

在上述代码中,// 这是一个单行注释,用于输出欢迎信息 就是一个单行注释,它为后续的代码功能提供了简要说明。

多行注释

多行注释以 /* 开头,以 */ 结尾,在这两个符号之间的所有内容都会被当作注释。示例如下:

#include <iostream>
/*
这是一个多行注释,
可以包含多行文本,
用于详细解释代码的功能和设计思路。
*/
int main() {
    std::cout << "This code is explained by multi - line comment." << std::endl;
    return 0;
}

在这个例子中,多行注释对代码的功能和设计思路进行了较为详细的解释。

字符串

在 C++ 中,字符串是用于存储和处理文本数据的重要数据类型。C++ 提供了两种处理字符串的方式:C 风格字符串和 std::string 类。

C 风格字符串

C 风格字符串实际上是一个以空字符 ‘\0’ 结尾的字符数组。以下是一个简单的示例:

#include <iostream>
#include <cstring>

int main() {
    // 声明并初始化一个 C 风格字符串
    char greeting[] = "Hello, C++!";
    // 输出 C 风格字符串
    std::cout << "Greeting: " << greeting << std::endl;

    // 计算字符串的长度
    int length = strlen(greeting);
    std::cout << "Length of the greeting: " << length << std::endl;

    return 0;
}

在上述代码中,我们声明并初始化了一个 C 风格字符串 greeting,然后使用 std::cout 输出该字符串。同时,我们使用 头文件中的 strlen 函数来计算字符串的长度。

std::string 类

std::string 类是 C++ 标准库提供的用于处理字符串的类,它封装了 C 风格字符串的操作,提供了更丰富的功能和更方便的接口。示例如下:

#include <iostream>
#include <string>

int main() {
    // 声明并初始化一个 std::string 对象
    std::string message = "Welcome to C++ world!";
    // 输出 std::string 对象
    std::cout << "Message: " << message << std::endl;

    // 获取字符串的长度
    size_t len = message.length();
    std::cout << "Length of the message: " << len << std::endl;

    // 字符串拼接
    std::string additional = " Enjoy coding!";
    message += additional;
    std::cout << "Combined message: " << message << std::endl;

    return 0;
}

在这个示例中,我们创建了一个 std::string 对象 message,并对其进行了输出、获取长度和字符串拼接等操作。std::string 类的 length 方法用于获取字符串的长度,使用 += 运算符可以方便地进行字符串拼接。

基本的输入输出

在 C++ 中,标准库提供了强大的输入输出流对象,主要包括 std::cin 用于输入,std::cout 用于输出。

输出操作

std::cout 是标准输出流对象,通常用于向控制台输出信息。以下是一个简单的输出示例:

#include <iostream>

int main() {
    int number = 10;
    std::string name = "Alice";

    // 输出整数
    std::cout << "The number is: " << number << std::endl;
    // 输出字符串
    std::cout << "The name is: " << name << std::endl;

    return 0;
}

在上述代码中,我们使用 std::cout 输出了一个整数和一个字符串。<< 是插入运算符,用于将数据插入到输出流中,std::endl 用于换行并刷新输出缓冲区。

输入操作

std::cin 是标准输入流对象,用于从控制台读取用户输入的数据。示例如下:

#include <iostream>
#include <string>

int main() {
    int age;
    std::string hobby;

    // 读取整数输入
    std::cout << "Please enter your age: ";
    std::cin >> age;

    // 读取字符串输入
    std::cout << "Please enter your hobby: ";
    std::cin >> hobby;

    std::cout << "You are " << age << " years old and your hobby is " << hobby << "." << std::endl;

    return 0;
}

在这个示例中,我们使用 std::cin 分别读取了用户输入的整数和字符串,并将其存储在相应的变量中,最后输出这些信息。>> 是提取运算符,用于从输入流中提取数据。

输入输出格式控制

有时候,我们需要对输入输出的格式进行控制,例如设置输出的精度、对齐方式等。C++ 提供了 头文件来实现这些功能。以下是一个设置输出精度的示例:

#include <iostream>
#include <iomanip>

int main() {
    double pi = 3.14159265358979323846;
    // 设置输出精度为 5 位小数
    std::cout << std::fixed << std::setprecision(5) << "Pi is approximately: " << pi << std::endl;

    return 0;
}

在上述代码中,我们使用了 头文件中的 std::fixed 和 std::setprecision 来设置输出的精度为 5 位小数。

日期处理

在 C++ 中,日期处理可以借助标准库中的 头文件来实现。该头文件提供了一些函数和类型,用于处理日期和时间。

获取当前时间

以下是一个获取当前时间并输出的示例:

#include <iostream>
#include <ctime>

int main() {
    // 获取当前时间
    std::time_t currentTime = std::time(nullptr);

    // 将时间转换为字符串形式
    char* timeString = std::ctime(&currentTime);

    std::cout << "Current time is: " << timeString << std::endl;

    return 0;
}

在这个示例中,我们使用 std::time(nullptr) 函数获取当前的时间戳,然后使用 std::ctime 函数将时间戳转换为字符串形式并输出。

日期和时间的格式化输出

我们可以使用 std::strftime 函数对日期和时间进行格式化输出。示例如下:

#include <iostream>
#include <ctime>
#include <iomanip>

int main() {
    std::time_t currentTime = std::time(nullptr);
    std::tm* localTime = std::localtime(&currentTime);

    char buffer[80];
    // 格式化日期和时间
    std::strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", localTime);

    std::cout << "Formatted current time: " << buffer << std::endl;

    return 0;
}

在上述代码中,我们使用 std::localtime 函数将时间戳转换为本地时间结构 std::tm,然后使用 std::strftime 函数按照指定的格式(%Y-%m-%d %H:%M:%S)将时间信息存储在字符数组 buffer 中并输出。

修饰符

在 C++ 中,修饰符用于改变数据类型或表达式的行为,是编程中不可或缺的重要工具。我们将从数据类型修饰符和流操作符修饰符两方面进行讲解。

  • 数据类型修饰符
    数据类型修饰符用于改变变量的存储特性或访问权限,常见的包括 const、volatile、static 等。

const 修饰符

const 用于声明常量,保证变量值在初始化后不可修改。

#include <iostream>

int main() {
    const int MAX_VALUE = 100; // 声明常量
    // MAX_VALUE = 200;  // 错误:无法修改 const 变量

    const int* ptr = &MAX_VALUE; // 指向常量的指针
    int const* ptr2 = &MAX_VALUE; // 等价写法

    int value = 50;
    int* const constPtr = &value; // 指针本身是常量
    // constPtr = &MAX_VALUE;  // 错误:无法修改 const 指针
    *constPtr = 60; // 允许修改指向的值

    return 0;
}

volatile 修饰符

volatile 告知编译器变量可能被异步修改(如硬件寄存器或多线程环境),阻止编译器优化。

volatile int hardwareRegister = 0; // 硬件寄存器变量

void readRegister() {
    int value = hardwareRegister; // 每次读取都实际访问内存
    // ...
}

static 修饰符

static 控制变量的作用域和存储周期:

  • 局部静态变量:在函数内保持状态
  • 全局静态变量:限制作用域为当前文件
  • 类静态成员:属于类而非实例
#include <iostream>

void counter() {
    static int count = 0; // 局部静态变量
    count++;
    std::cout << "Count: " << count << std::endl;
}

class Singleton {
private:
    static Singleton instance; // 类静态成员
    Singleton() {}
public:
    static Singleton& getInstance() {
        return instance;
    }
};

int main() {
    counter(); // 输出 Count: 1
    counter(); // 输出 Count: 2

    Singleton::getInstance(); // 访问类静态方法
    return 0;
}

extern 修饰符

extern 声明外部变量,用于跨文件访问。

// file1.cpp
extern int globalVar; // 声明外部变量
void useGlobal() { std::cout << globalVar << std::endl; }

// file2.cpp
int globalVar = 42; // 定义全局变量

流操作符修饰符

流操作符修饰符用于控制输入输出格式,主要通过 头文件实现。

格式控制修饰符

修饰符说明示例
std::endl换行并刷新缓冲区std::cout << “Line” << std::endl;
std::flush刷新输出缓冲区std::cout << “Flush” << std::flush;
std::hex设置十六进制输出std::cout << std::hex << 255;
std::dec设置十进制输出(默认)std::cout << std::dec << 0xFF;
std::oct设置八进制输出std::cout << std::oct << 255;
std::left左对齐std::cout << std::left << std::setw(10) << “Left”;
std::right右对齐(默认)std::cout << std::right << std::setw(10) << “Right”;
std::setw设置字段宽度std::cout << std::setw(10) << 123;
std::setprecision设置浮点数精度std::cout << std::setprecision(4) << 3.14159;
#include <iostream>
#include <iomanip>

int main() {
    // 数值进制转换
    int number = 255;
    std::cout << "Hex: " << std::hex << number << std::endl;  // FF
    std::cout << "Dec: " << std::dec << number << std::endl;  // 255
    std::cout << "Oct: " << std::oct << number << std::endl;  // 377

    // 对齐与宽度控制
    std::cout << std::left << std::setw(15) << "Name" 
              << std::right << std::setw(5) << "Age" << std::endl;
    std::cout << std::left << std::setw(15) << "Alice" 
              << std::right << std::setw(5) << 30 << std::endl;

    // 浮点数精度
    double pi = 3.1415926535;
    std::cout << std::fixed << std::setprecision(3) << pi << std::endl; // 3.142

    return 0;
}

相关文章:

  • LeetCode 2269.找到一个数字的 K 美丽值:字符串数字转换(模拟)
  • postgresql json和jsonb问题记录
  • 多方安全计算(MPC)电子拍卖系统
  • c#中使用时间戳转换器
  • 在vs中无法用QtDesigner打开ui文件的解决方法
  • DeepSeek本地化部署与跨域访问架构构建
  • 基于langchain+llama2的本地私有大语言模型实战
  • 义乌购商品详情接口调用指南:Python实战代码与完整示例
  • 【算法】BST的非递归插入,删除,查询
  • 蓝桥杯[每日两题] 练习题:盛最多水的容器 三数之和(java版)
  • flutter的HTTP headers用法介绍
  • 【组件安装】Rocky 8.10 安装Local License Server 25.03.0 for Linux
  • Python基本语法——变量
  • Conda环境搭建实战指南:打造高效开发环境
  • DeepSeek开源Day2:DeepEP技术详解
  • Ae 效果详解:VR 降噪
  • tkinter上canvas展示图片报错(mac系统)
  • 【人工智能】随机森林的智慧:集成学习的理论与实践
  • Linux练级宝典->Linux进程概念介绍
  • ROS2学习笔记2
  • 三件珍贵标本开箱!中国恐龙大展5月26日在沪开幕,明星标本汇聚一堂
  • 《掩耳盗邻》:富人劫富,是犯罪,也是赎罪?
  • 高飞已任南航集团党组副书记
  • 流失海外79年,两卷战国帛书回归祖国
  • 《制止滥用行政权力排除、限制竞争行为规定(修订草案征求意见稿)》公开征求意见
  • 吉利汽车一季度净利润大增264%,称整合极氪后实现整体效益超5%