Client#define _WINSOCK_DEPRECATED_NO_WARNINGS#include #include #include // 包含网络通信头文件#pragma comment(lib, "ws2_32.lib")#define PORT 8888#define SERVER_IP "127.0.0.1"#define BUFFER_SIZE
Client#define _WINSOCK_DEPRECATED_NO_WARNINGS#include #include #include #include #include #pragma comment(lib, "ws2_32.lib")namespace udp_client {class UdpClient {public: bool InitWi
#include #include #include #include int main02() { //const char* kStrArray[100] = { // "1", // "2" //}; const char* kStrArray[100] = { NULL }; for (int i = 0; i < 99; ++i) { i
头文件: my_string.h#ifndef MY_STRING_H_#define MY_STRING_H_#pragma once#include class MyString {public: MyString(); MyString(const char* c_str); MyString(size_t n, char ch); MyString(con
问题引入 代码中总能看到有的人喜欢在头文件中定义const变量,或者在头文件中定义const变量。最常见的就是在头文件中定义字符串,例如在头文件def.h中定义变量:// defs.hstatic std::string s_str = "Static"; const std::string kStr = "Const";这样写就可以在需要用到该字符串的地方引...
创建并读取如下xml文件: MaZhe 18 Miki 19 Maki 20 代码实现:#include #include #include #include #include "pugixml.hpp"static const char* kFileName = "students2.xml";struct
创建并读取如下xml文件: MaZhe 18 MaZhe 18 MaZhe 18 代码实现:#include #include #include #include #include #include "tinyxml.h"using namespace std;static c
#include #include #include #include using namespace std;class Date {public: Date(int x, int y) : x_(x) , y_(y) { } void Print() { cout << x_ << " : " << y_ << endl; }pri
#include #include #include #include #include templatestatic void Test(int va_list_len, ...) { va_list arguments; va_start(arguments, va_list_len); for (int i = 0; i < va_list_len; ++i) {
(一) 调试Dump文件步骤1. 准备调试所需要的文件放到一个文件夹:dump文件,程序编译生成的pdb文件(版本必须是产生崩溃的那个版本的编译信息),可执行文件(发生崩溃的版本)。如下图:2. 使用visual studio打开上图中的dump文件。然后配置该程序的代码路径(代码会滚到该程序所处的版本),如下图,3. 点击调试,如图,
placement new 操作符可以在一块内存上面调用构造函数去构造一个对象。operator new 操作符可以申请一块内存,返回该内存的指针void*。&nbsp;&nbsp;通过这两个操作符的结合使用,可以延迟对象的构造,也可以避免重复的申请释放内存,而在一块内存上面不断地进行对象的构造析构,从而提高效率,并且减少了内存碎片的产生。 &nbsp;&nbsp;接下来举个例子,...
问题一:当给函数传递对象当做函数参数时,可以使用引用类型来减少拷贝对象的代价,尤其是避免容器的拷贝等。 但是当把函数内的局部对象当做返回值时,我们无法返回该局部对象的引用,导致每次返回局部对象都会进行拷贝。 因为返回局部对象的引用是无意义的,当函数调用完成,局部对象就被析构,所以其引用指向了一块析构的内存。解决方案一: 将输出作为函数参数,例如:void GetStudents(std::vect...
C++标准库已经提供了std::queue这一队列容器,但不是线程安全的。std::queue这个容器已经提供了pop(),push(),empty()等这些读写操作容器的函数,只要在这些函数上面加个锁,就可以使其线程安全。 在C++原有容器上面进行简单封装即可实现一个线程安全的队列,实现代码如下:#include <iostream...
1. 饿汉模式使用饿汉模式实现单例是十分简单的,并且有效避免了线程安全问题,因为将该单例对象定义为static变量,程序启动即将其构造完成了。代码实现:#include &lt;iostream&gt;class Singleton {public: static Singleton&amp; GetInstance() { static Singleton intanc...
问题引入项目中需要集成其他团队做的一个带有界面的工具。使用该工具时碰到了如下问题:直接双击这个工具的exe,可以正常启动。通过程序调用,或者用Everything打开这个工具,工具可以启动,但是界面上的图标全部消失了。问题分析打开命令行,执行目录切换到该exe目录下,然后调用该exe,正常启动。将执行目录切换到上上级目录,然后调用该exe,工具不能正常启动,图标全部消失。通过分析,...
项目中需要重启一个托盘程序。但是重启之后,任务栏的托盘程序图标增加了一个,原来的图标并没有消失。原来任务栏的托盘程序图标,当鼠标在上面移动过之后才会刷新。所以一个解决办法就是模拟鼠标事件,模拟鼠标在上面的所有图标都移动过。但是这种办法对于图标在隐藏任务栏中则不起作用。#include <windows.h>#include <iostream>int main()...
以epoll-server项目为例,通过VSCODE编译并调试。该形目由CMake构建,目标在该目录下生成build目录,通过CMake生成Makefile工程到build目录下,然后在build目录下执行make命令进行编译,最后通过VSCODE进行调试。Build代码目录用VSCODE WSL模式打开该目录。在.vscode文件夹下面创建task.json。task.json{ "version": "2.0.0", "tasks": [ {..
最近实现了一个多级时间轮定时器,经过了简单的测试,如果将时钟步长设置为10ms以内误差会比较大。最新代码地址TimeWheel Github。特性C++11实现可自定义时间轮层级可自定义时间轮刻度可设置时钟步长误差基本在时钟步长以内推荐时钟步长50ms类介绍代码由三个类组成:Timer,TimeWheel,TimeWheelScheduler。Timer:定时器类,封装了定时器任务std::function<void()>。TimeWheel:时间轮类,每个时间.
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号