Cpp-3

如何安装:eigen3、yaml-cpp、Glog、abseil-cpp(absl)、boost 在ubuntu或者WSL下配置C++编译环境,需要装一些三方库,便于项目通过CMake CMakeLists.txt find_package()调用。 阅读详情

文件和流

/*
    1.文件操作
        这需要用到 C++ 中另一个标准库 fstream

    2.对于标准库 fstream ,它定义了三个新的数据类型:
        数据类型            描述
        ofstream    表示输出文件流,用于创建文件并向文件写入信息
        ifstream    表示输入文件流,用于从文件读取信息
        fstream        表示文件流,且同时具有 ofstream 和 ifstream 两种功能,这意味着它可以创建文件,向文件写入信息,从文件读取信息

        记忆:
            OutFileStream  -->    ofstream
            InFileStream   -->    ifstream

    3.打开文件
        open() 函数是 fstream、ifstream 和 ofstream 对象的一个成员
        e.g.
            void open(const char *filename, ios::openmode mode);

            参数说明:(以下模式可以结合使用)
                ios::app    追加模式。所有写入都追加到文件末尾
                ios::ate    文件打开后定位到文件末尾
                ios::in        打开文件用于读取
                ios::out    打开文件用于写入
                ios::trunc    如果该文件已经存在,其内容将在打开文件之前被截断,即把文件长度设为 0

            例如:
                1.以写入模式打开文件,并希望截断文件,以防文件已存在
                    ofstream outfile;    // 实例化一个文件对象 outfile
                    outfile.open("file.dat", ios::out | ios::trunc );    // 调用文件对象,并使用 open 函数成员
                
                2.打开一个文件用于读写
                    ifstream  afile;
                    afile.open("file.dat", ios::out | ios::in );

    4.读取文件
        使用流提取运算符 >> 从文件读取信息

    5.写入文件
        使用流插入运算符 << 向文件写入信息

    6.关闭文件( close()函数是 fstream、ifstream 和 ofstream 对象的一个成员)
        void close();

    7.文件位置指针
        1.istream 和 ostream 都提供了用于重新定位"文件位置指针"的成员函数
             istream 的 seekg()            // 含义"seek get"
             ostream 的 seekp()            // 含义"seek put"

             参数:(不写参数,默认ios::beg)
             ios::beg        // begin    从开头        开始定位
             ios::cur        // current    从当前位置    开始定位
             ios::end        // end        从末尾        开始定位

             文件位置指针,是一个整数值
             指定了从文件的起始位置
             到指针所在位置的字节数
*/
#include <fstream>
#include <iostream>
using namespace std;
 
int main ()
{
    
   char data[100];
 
   // 以写模式打开文件
   ofstream outfile;
   outfile.open("afile.dat");
 
   cout << "Writing to the file" << endl;
   cout << "Enter your name: "; 
   cin.getline(data, 100);
 
   // 向文件写入用户输入的数据
   outfile << data << endl;
 
   cout << "Enter your age: "; 
   cin >> data;
   cin.ignore();
   
   // 再次向文件写入用户输入的数据
   outfile << data << endl;
 
   // 关闭打开的文件
   outfile.close();
 
   // 以读模式打开文件
   ifstream infile; 
   infile.open("afile.dat"); 
 
   cout << "Reading from the file" << endl; 
   infile >> data; 
 
   // 在屏幕上写入数据
   cout << data << endl;
   
   // 再次从文件读取数据,并显示它
   infile >> data; 
   cout << data << endl; 
 
   // 关闭打开的文件
   infile.close();
 
   return 0;
}
// 定位到 fileObject 的第 n 个字节(假设是 ios::beg)
fileObject.seekg( n );
 
// 把文件的读指针从 fileObject 当前位置向后移 n 个字节
fileObject.seekg( n, ios::cur );
 
// 把文件的读指针从 fileObject 末尾往回移 n 个字节
fileObject.seekg( n, ios::end );
 
// 定位到 fileObject 的末尾
fileObject.seekg( 0, ios::end );

异常处理

try
{
    // 尝试执行代码...
}
catch (ExceptionName e1)    // 捕获异常,解决异常
{
    // catch 块
}
catch (ExceptionName e2)
{
    // catch 块
}
catch (ExceptionName eN)
{
    // catch 块
}
double division(int a, int b)
{
   if( b == 0 )
   {
      throw "Division by zero condition!";    // 抛出异常
   }
   return (a/b);
}
/*
    定义新的异常
        可以通过继承和重载 exception 类来定义新的异常。
        下面的实例演示了如何使用 std::exception 类来实现自己的异常:
*/

#include <iostream>
#include <exception>
using namespace std;

struct MyException : public exception    // 通过让 MyException 继承 exception,实现自定义异常
{
    const char * what() const throw ()
    {
        return "C++ Exception";
    }
};

int main()
{
    try
    {
        throw MyException();
    }
    catch (MyException& e)
    {
        std::cout << "MyException caught" << std::endl;
        std::cout << e.what() << std::endl;
    }
    catch (std::exception& e)
    {
        //其他的错误
    }
}

多线程

/*
    <线程>

    1.什么是多线程?
        多线程是"多任务处理"的一种特殊形式
        多线程程序包含可以同时运行的两个或多个部分
        这样的程序中的每个部分称为一个线程
        每个线程定义了一个单独的执行路径

    2.创建线程
        e.g.
            #include <pthread.h>
            pthread_create (thread, attr, start_routine, arg)

        参数说明:
            参数                    描述
            thread                指向线程标识符指针。
            attr                一个不透明的属性对象,可以被用来设置线程属性。您可以指定线程属性对象,也可以使用默认值 NULL。
            start_routine        线程运行函数起始地址,一旦线程被创建就会执行。
            arg                    运行函数的参数。它必须通过把引用作为指针强制转换为 void 类型进行传递。如果没有传递参数,则使用 NULL。

        创建线程成功时,函数返回 0,若返回值不为 0 则说明创建线程失败
*/

#include <iostream>
// 必须的头文件
#include <pthread.h>

using namespace std;

#define NUM_THREADS 5

// 线程的运行函数
void* say_hello(void* args)
{
    cout << "Hello Runoob!" << endl;
    return 0;
}

int main()
{
    // 定义线程的 id 变量,多个变量使用数组
    pthread_t tids[NUM_THREADS];
    for (int i = 0; i < NUM_THREADS; ++i)
    {
        //参数依次是:创建的线程id,线程参数,调用的函数,传入的函数参数
        int ret = pthread_create(&tids[i], NULL, say_hello, NULL);
        if (ret != 0)
        {
            cout << "pthread_create error: error_code=" << ret << endl;
        }
    }
    //等各个线程退出后,进程才结束,否则进程强制结束了,线程可能还没反应过来;
    pthread_exit(NULL);
}

Web 编程

/*
    1.什么是 CGI?
        1.公共网关接口(CGI),是一套标准,定义了信息是如何在 Web 服务器和客户端脚本之间进行交换的
        2.CGI 规范目前是由 NCSA 维护的,NCSA 定义 CGI 如下
            公共网关接口(CGI),是一种用于外部网关程序与信息服务器(如 HTTP 服务器)对接的接口标准

    2.Web 服务器配置
         CGI 编程之前,请确保您的 Web 服务器支持 CGI,并已配置成可以处理 CGI 程序
         所有由 HTTP 服务器执行的 CGI 程序,都必须在预配置的目录中
         该目录称为 CGI 目录,按照惯例命名为 /var/www/cgi-bin
         虽然 CGI 文件是 C++ 可执行文件,但是按照惯例它的扩展名是 .cgi
     ————————————————————————————————————————
        默认情况下,Apache Web 服务器会配置在 /var/www/cgi-bin 中运行 CGI 程序
        如果您想指定其他目录来运行 CGI 脚本,您可以在 httpd.conf 文件中修改以下部分:
            <Directory "/var/www/cgi-bin">
                AllowOverride None
                Options ExecCGI
                Order allow,deny
                Allow from all
            </Directory>

            <Directory "/var/www/cgi-bin">
                Options All
            </Directory>
    ————————————————————————————————————————
    在这里,我们假设已经配置好 Web 服务器并能成功运行,你可以运行任意的 CGI 程序,比如 Perl 或 Shell 等


    编译下面的代码,把可执行文件命名为 cplusplus.cgi,并把这个文件保存在 /var/www/cgi-bin 目录中
    在运行 CGI 程序之前,请使用 chmod 755 cplusplus.cgi UNIX 命令来修改文件模式,确保文件可执行
*/

#include <iostream>
using namespace std;

int main()
{

    cout << "Content-type:text/html\r\n\r\n";
    cout << "<html>\n";
    cout << "<head>\n";
    cout << "<title>Hello World - 第一个 CGI 程序</title>\n";
    cout << "</head>\n";
    cout << "<body>\n";
    cout << "<h2>Hello World! 这是我的第一个 CGI 程序</h2>\n";
    cout << "</body>\n";
    cout << "</html>\n";

    return 0;
}
编译etcd-cpp-apiv3 最近分布式项目开发中用到订阅/通知机制,经过选型决定采用**etcd**,在调研etcd使用方式、订阅/通知方案过程中遇到很多问题,这里做下简单记录。 阅读详情

相关推荐

etcd-cpp-apiv3使用示例介绍

  最近分布式项目开发中用到订阅/通知机制,经过选型决定采用etcd,在调研etcd使用方式、订阅/通知方案过程中遇到很多问题,这里做下简单记录。 本系列总共3篇: 《搭建etcd集群》:介绍搭建etcd集群方式、遇到的问题及处理方式; 《编译安装etcd-cpp-apiv3》:介绍etcd-cpp-apiv3编译安装方式、常见问题及处理方式; 《etcd-cpp-apiv3使用实例介绍》:介绍如何通过etcd-cpp-apiv3建立与etcd集群的连接,订阅etcd消息。  本文是第3篇 《etcd-

絮雨清风 3368

【亲测免费】 etcd-cpp-apiv3:高效便捷的C++ etcd v3客户端API

etcd-cpp-apiv3:高效便捷的C++ etcd v3客户端API 项目介绍 etcd-cpp-apiv3 是一个为 etcd v3 客户端 API 提供的 C++ API。etcd 是一个分布式键值存储系统,广泛用于微服务架构中的服务发现和配置管理。etcd-cpp-apiv3 项目旨在为 C++ 开发者提供一个高效、易用的接口,以便在 C++ 应用中无缝集成 etcd 服务。 项目技术...

gitblog_00873的博客 843

windows 下配置Dev Cpp和QT 4.3.3

1 安装QT4和Dev-Cpp      Dev-cpp版本:4.9.9.2      下载地址:http://sourceforge.net/project/downloading.php?groupname=dev-cpp&filename=devcpp-4.9.9.2_setup.exe&use_mirror=nchc(右键迅雷下载)      Qt版本:4.3.3      下载地址:ft

hoholook的专栏 1721

C/C++开发者指南:使用Wasm3_cpp高效集成WebAssembly模块

你是否在寻找一种轻量级方案,让C/C++应用高效运行WebAssembly(WASM,网页汇编)模块?Wasm3_cpp作为Wasm3解释器的C++封装库,以其跨平台特性和低资源占用,成为嵌入式设备与高性能应用的理想选择。本文将带你从环境搭建到实际应用,掌握Wasm3_cpp的核心使用方法。 ## 环境准备与安装 Wasm3_cpp支持多平台部署,针对不同开发场景提供多种安装方式: - **...

gitblog_00123的博客 827

CPP文件和C文件混编和将sqlite3加入自己的c++工程

今天尝试将使用sqlite3数据库,直接使用sqlite3的源码,得到sqlite3.c和sqlite3.h。 我想将他们加入到我的cpp工程里面 所以我新建了一个mysqlite3.cpp文件,在里面调用了sqlite3的函数。 下面来说明我遇到的问题及解决方法 一共有两种编译方法,一种使用gcc/g++编译,一种使用cmake编译,下面就来说明这两种方法 工程源码在最后面。 第一种...

飞鸟慕鱼的博客 2365

CentOS下编译安装etcd-cpp-apiv3

上述代码创建了一个etcd::Client对象来连接本地的etcd集群,并获取名为"/foo"的键的值。现在,我们可以编写一个简单的C++程序来测试etcd-cpp-apiv3库是否成功安装。这将在当前目录下创建一个名为etcd-cpp-apiv3的文件夹,并将源代码下载到该文件夹中。进入etcd-cpp-apiv3目录,并创建一个build文件夹用于构建过程。至此,你已经成功地编译和安装了etcd-cpp-apiv3库,并完成了一个简单的测试程序。最后,执行make命令编译源代码并安装库文件。

PixelShadeZ的博客 469

etcd-cpp-apiv3 编译(备忘)

etcd-cpp-apiv3 etcd-cpp-apiv3 是 C++ Etcd client api 库 见官方客户端库,推荐页: https://etcd.io/docs/v3.4/integrations/ Github 地址: https://github.com/etcd-cpp-apiv3/etcd-cpp-apiv3.git etcd-cpp-apiv3 依赖: boost grpc protobuf cpprestsdk 由于官方 README.md 中的编译方式,并不是本人想要的方式

范安崇的博客 1434

Qt c++ llama.cpp 运行 LLaMA-3-8B 中文对话机器人(多模态输入)

助手:

寒寒豆豆软件公司的博客 219

3DGS.cpp 项目教程

3DGS.cpp 项目教程 1. 项目介绍 3DGS.cpp 是一个跨平台的高性能高斯散射渲染器,使用 Vulkan 计算管道实现。该项目旨在为高斯散射提供一个高性能、跨平台的解决方案,支持 Windows、Linux、macOS、iOS 和 visionOS 等多个操作系统。 主要特点 跨平台支持:支持 Windows、Linux、macOS、iOS 和 visionOS。 高性能渲染:利用 ...

gitblog_01012的博客 1039

Dev-Cpp+5.3.0.3+TDM-GCC:Windows平台的高效C++开发环境

Dev-Cpp 是一款流行的集成开发环境(IDE),广泛用于Windows系统上编写C/C++程序。它以用户友好的界面和轻量级的特点受到众多开发者的青睐,尤其适合教学和自学。

weixin_32661831的博客 1443

基于集成运放心电放大器设计(原创)

原创作者:einyboy or alert 最近在看美剧《危机边缘》关于边缘科学的案件,科技控可以看一下,但建议不在吃东西的时候看。想像力是创造的思想源头,动手能力则是创造的车床。 自认为是没有想像力的那类,只能发挥动手能力了。 心电测量简介 图1 心电极接线图 如图1心电测试一般使用3个心电极进行测量,各个电极的说明如下: RA: Right Arm缩写,右手电极 LA: L...

huandaohack的专栏 6923

【亲测免费】 etcd-cpp-apiv3 开源项目教程

etcd-cpp-apiv3 开源项目教程 项目介绍 etcd-cpp-apiv3 是一个基于 C++ 的 etcd v3 API 客户端库。etcd 是一个分布式键值存储系统,常用于分布式系统中的配置管理、服务发现和分布式锁等场景。etcd-cpp-apiv3 项目旨在为 C++ 开发者提供一个简单易用的接口,以便他们能够方便地与 etcd 进行交互。 项目快速启动 环境准备 在开始之前,请确保...

gitblog_00457的博客 905

基于Java+Maven+Testng+RestAssured+Allure+Jenkins搭建一个接口自动化框架

2、有一个提取表达式列,通过编写每个接口的JSON提取表达式,后边在解析Excel时,对接口执行后的响应数据用该表达式提取出来,保存到环境变量,如果某些接口需要前置接口的响应数据,我们就可以从环境变量中获取该数据出来,从而解决了接口关联的问题。1、在之前介绍过全局配置类Contants中添加一个控制台日志开关控制权限,如果选择为false,则控制台不输出日志,将日志输出到allure报表,选择为true,则在控制台输出日志,不输出到allure报表。

专注于技术分享的博主 1183

centos8.3.2011下etcd-cpp-apiv3编译安装

etcd-cpp-apiv3,用于C++连接etcd的客户端库,git地址:https://github.com/etcd-cpp-apiv3/etcd-cpp-apiv3 因为官方对centos8下编译说明及其不友好,网上资料也非常的少,没有完整编译记录,导致折腾一天才完成编译,所以写下这篇记录文章,供有缘人参考。这篇文章仅限于懂得部署linux下C/C++编译环境,了解Cmake/make使用方式的人士阅读,文中不会阐述如何部署编译环境. 所有需要的库 1.boost 2.openssl (..

当你打算放弃梦想的时候,告诉自己再多撑一天,一个星期,一个月,再多撑一年吧。 583

Cluster Computing投稿

在overleaf中新建picins.sty文件,该文件是导入的包在.tex文件中添加以下内容\usepackage{picins}%实现作者简介%下边这块有几个人复制几段\vspace{0\baselineskip} %这一行控制作者间隔,可视情况改数字!!!!!!!!

这里是萤石ym的学习路途,努力搬砖! 5533

风控域——决策引擎系统设计

本文详细介绍了风控决策引擎系统的设计与应用。决策引擎系统是一种智能化工具,可自动化、数据驱动地辅助或替代人工决策,广泛应用于金融、医疗、营销、风控等领域。文章阐述了决策引擎的核心功能,包括自动化决策、动态规则管理、实时处理和模型集成,以及系统组成,涵盖数据输入层、规则引擎和模型服务层。此外,还探讨了决策引擎的典型应用场景、技术架构、组件设计,以及风控决策引擎系统的技术方案、设计难点和重点。

庄小焱 3316

etcd-cpp-apiv3 项目教程

etcd-cpp-apiv3 项目教程 1. 项目的目录结构及介绍 etcd-cpp-apiv3/ ├── CMakeLists.txt ├── LICENSE ├── README.md ├── include/ │ └── etcd/ │ ├── AsyncClient.h │ ├── Client.h │ ├── KV.h │ ├── Le...

gitblog_00129的博客 662

开源工具对比:5款主流大数据脱敏框架评测

数据脱敏(Data Masking/Anonymization),也称为数据漂白、数据去标识化,是指在不影响数据可用性的前提下,通过一定的技术手段对敏感信息进行处理,使其无法被识别或关联到具体个人或实体的过程。当应用程序向数据库写入数据(INSERT/UPDATE)时,ShardingSphere 会拦截 SQL,对配置了脱敏规则的字段,使用指定的算法进行加密/脱敏处理,然后将处理后的数据写入到。如果你的答案是“是”,那么数据脱敏,尤其是针对海量数据的。好的,各位技术同仁,数据安全领域的探索者们,大家好。

小程序开发 1184

kys-cpp引擎架构深度解析:从SDL3到现代C++23的武侠游戏开发终极指南

金庸群侠传c++复刻版(kys-cpp)是一款基于现代C++23标准和SDL3库开发的2D武侠游戏引擎,它成功将经典DOS游戏《金庸群侠传》移植到现代平台。这款引擎不仅保留了原作的精髓,还引入了创新的战斗系统和现代化的架构设计,为游戏开发者提供了一个高质量的开源参考框架。 ## 🎯 核心架构:SDL3与现代C++的完美融合 kys-cpp引擎的核心建立在SDL3(Simple DirectM

gitblog_00842的博客 536

大模型——Ollama简明教程

在这篇文章中,我们将了解如何使用 Ollama、如何在 Ollama 中创建自己的模型 以及如何使用 Ollama 构建聊天机器人。这是深入研究 Ollama 的第一部分,以及我所学到的有关本地 LLM 的知识以及如何将它们用于基于推理的应用程序。在这篇文章中,你将了解——

1687

3D高斯压缩黑科技开源!1GB场景压到42MB,Web3D迎来“WebP时刻”——SOG格式深度解析

Web3D迎来革命性突破!PlayCanvas开源全新3D高斯泼溅压缩格式SOG,将1GB场景压缩至仅42MB,体积缩小95%,加载速度提升10倍+。SOG通过将3D数据编码为WebP纹理+元数据,实现GPU零拷贝实时渲染,完美兼容WebGL/WebGPU。实测显示,4百万高斯点的场景在手机上1.5秒内完成加载,内存占用降低83%。这一技术突破为电商展示、虚拟旅游、工业设计等领域带来新机遇,开发者可通过开源工具链快速集成。SOG被誉为"3D界的WebP",有望成为下一代3D互联网的基础设

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 862

在cpp上使用aws-cpp-sdk-s3连接minio的工具代码

目录配置aws-cpp-sdk-s3实现的功能s3_utils.hpps3_utils.cpp 配置aws-cpp-sdk-s3 详见我的另一篇博客 实现的功能 直接上传文本内容 直接下载文本内容 上传opencv的图片 因为个人的项目只需要在内存中操作数据,所以暂不支持本地文件的上传下载,有需要可以自己实现,思路差不多。 s3_utils.hpp 里面还加了直接上传opencv图像的方法,如果不需要可以删掉。 #ifndef S3_UTILS_HPP #define S3_UTILS_HPP #i

xzq1207105685的博客 5105

Raspberry Pi Pico + Inmp441麦克风(Pio模拟I2s)<2>

摘要:本文介绍了在Raspberry Pi Pico上使用PIO(Programmable I/O)接收I2S数字麦克风音频数据并保存为WAV文件的方法。项目采用双PIO状态机设计,一个生成I2S时钟信号(WS+SCK),另一个接收24位左声道数据并转换为16位格式。文章详细说明了接线方式、参数设置、WAV文件头构造、PIO汇编程序实现以及数据转换处理流程。项目在MicroPython环境下实现16kHz采样率、6秒时长录音,具有时序精确、稳定可靠的特性,并提供了进一步拓展的可能性,如双声道支持、实时频谱分

技术需要沉淀,需要碰撞。 658

SQLite3 Cpp基本使用

SQLite3 C++ #0 GitHub example代码 SQLite3 C++ Demo Github #1 环境 macOS C++14 #2 安装sqlite3 git clone https://github.com/sqlite/sqlite.git cd sqlite && mkdir bld && cd bld ../configure make make sqlite3.c make test sudo make install #3 使用 #3

Auto 3019

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

windows 部署llama3.0.cpp

在cmd上查看这些安装情况,输入cmake --version, 查看cmake是否安装,如果没有安装,参考这个,再次输入cmake --version。

jw_win的博客 2244

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

gRPC etcd-cpp-apiv3 windows 下编译

介绍 gRPC 编译依赖 : openssl etcd-cpp-apiv3 编译依赖: openssl grpc boost cpprestsdk c++ 最不友好的地方,就是编译,非常耗时。一两天的时间,就花在编译上! 编译 openssl 编译工具 说明 perl https://strawberryperl.com/download/5.32.1.1/strawberry-perl-5.32.1.1-64bit.msi nmake Visual Studio 2019 编译过程

范安崇的博客 866

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: Cpp-2
下一篇: Vue-1
code_stream
博客等级 码龄4年 1238粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值