- 博客(34)
- 收藏
- 关注
原创 C/C++/Windows/Linux文件操作
offset:相对应 origin 位置处的偏移量,单位为字节。#define SEEK_CUR 1 // 当前位置。#define SEEK_END 2 // 末尾。#define SEEK_SET 0 // 开头。filename:文件的完整路径。origin:指针的位置。oldname:原名。newname:新名。
2023-11-08 11:15:28 496
原创 C++国际化编程
ANSI并不是某一种特定的字符编码,而是在不同的系统中,ANSI表示不同的编码。电脑卖给美国国内的系统默认就用ASCII编码,卖给中国人的系统默认就用GBK编码,卖给韩国人的系统默认就用EUC-KR编码,…但是为了避免误会卖给你们的系统功能有差异,就统一把你们的默认编码都显示成ANSI。宽字节:通常用两个字节表示一个字符,对应的就是Unicode字符集。多字节:用多个字节表示一个字符,对应的就是ANSI标准。
2023-08-30 14:26:26 1081
转载 使用vs2019进行Linux远程开发
调试部分提供了gdb和gdbserver,前者是让vs在Linux上启动一个console,然后在其中运行gdb并返回输出,如果你的Linux上的终端配置了彩色输出,那么和遗憾vs并不认识他们,会显示成原始的字符串;原因很简单,输入时实在linux的控制台环境下,编码默认是utf8的,所以我们的输入被正确编码,而源文件中的内容是GB18030的,所以在Linux控制台(默认以utf8解码数据并显示)中会发生乱码。默认复制的路径通常已经包含了Linux上大部分的头文件,通常我们也不需要做更改。
2023-03-20 15:32:26 794
原创 vc6.0引入动态链接库
tools——> options ——> directories 设置头文件和库文件目录。工程上右键——> Settings ——> Link ——> object/library modules 设置库文件名称(填写xxx.lib)
2022-12-23 15:15:36 507
原创 Linux 网络编程常用API
IP网络字节顺序 --> 主机字节顺序端口号:IP:IP地址转换函数本地IP转网络字节序 字符串 --> int(大端方式存储)参数:af:指定当前所使用的协议,AF_INET(IPV4),AF_INET6(IPV6) src:IP地址(点分十进制)dst:传出,网络字节序的IP地址网络字节序转本地IP int -> 字符串参数:List itemsize:dst的大小参数:domin:指定协议,AF_INET、AF_INET6、AF_UNI
2022-06-28 16:39:54 374
原创 常用锁API
互斥锁的类型:PTHREAD_MUTEX_TIMED_NP,这是缺省值,也就是普通锁。当一个线程加锁以后,其余请求锁的线程将形成一个等待队列,并在解锁后按优先级获得锁。这种锁策略保证了资源分配的公平性。PTHREAD_MUTEX_RECURSIVE_NP,嵌套锁,允许同一个线程对同一个锁成功获得多次,并通过多次unlock解锁。如果是不同线程请求,则在加锁线程解锁时重新竞争。PTHREAD_MUTEX_ERRORCHECK_NP,检错锁,如果同一个线程请求同一个锁,则返回EDEADLK,否则与PTH
2022-06-21 15:34:49 154
转载 C++指向类成员的函数指针
定义:类成员函数指针(member function pointer),是 C++ 语言的一类指针数据类型,用于存储一个指定类具有给定的形参列表与返回值类型的成员函数的访问信息。基本上要注意的有两点:1、函数指针赋值要使用 &2、使用 .* (实例对象)或者 ->*(实例对象指针)调用类成员函数指针所指向的函数下面看两个例子:对于 nonstatic member function (非静态成员函数)取地址,获得该函数在内存中的实际地址对于 virtual function(虚函数), 其地址在编译时期
2022-06-17 14:47:15 3527
原创 Windows I/O API
CreateFile 函数创建或打开下列对象,并返回一个可以用来访问这些对象的句柄。文件pipes邮槽通信资源 (socket)磁盘驱动器(仅适用于 windowsNT )控制台文件夹(仅用于打开)HANDLE CreateFile( LPCTSTR lpFileName, // 要打开的文件的名字 DWORD dwDesiredAccess, // 访问模式(写 / 读) DWORD dwShareMode, // 共享模式 LPSECURITY_ATT
2022-05-24 10:31:05 213
原创 Windows进程和线程常用API
文章目录GetModuleFileNameA 获取一个可执行文件或DLL文件的位置GetCommandLine 获取指向当前进程命令行的指针GetEnvironmentStrings 获取完整环境块GetCurrentDirectory 获取当前进程所在的目录CreateProcess 创建一个进程获取当前进程IDGetModuleFileNameA 获取一个可执行文件或DLL文件的位置DWORD GetModuleFileNameA(HMDULE hModule,LPSTR lpFilename,D
2022-05-23 15:50:02 1487
原创 Windows字符串 API
目录字符串比较字符串比较#include <Windows.h>int CompareString( LCID Locale, // locale identifier DWORD dwCmpFlags, // comparison-style options LPCTSTR lpString1, // first string int cchCount1, // size of first string LPCTSTR lpString2, /
2022-05-20 15:05:00 260
原创 Linux I/O API
目录文件操作open打开文件参数:close参数:read参数:write参数:lseek 改变文件偏移量参数:fcntl 文件控制操作dup 复制文件描述符dup2 重定向truncate/ftruncate 截断文件目录操作文件操作open打开文件#include <sys/stat.h>#include <fcntl.h>int open(const char* pathname,int flags)int open(const char* pathname,int
2022-04-29 15:29:09 210
原创 i++问题探索
不同编译器下的i++不尽相同。代码#include<iostream>using namespace std;int main(){ string s = "hello"; char str[20] = { 0 }; int i = 0; str[i] = s[i++]; //str[i++] = s[i]; cout << "0 \t" << str[0] << endl; cout <&
2022-04-28 13:26:57 162
转载 C++中的回调函数
目录普通函数作为回调函数类的成员函数作为回调函数类的静态成员函数作为回调函数在类外定义接口函数在类内定义接口函数在类A中定义回调函数,在类B中定义接口函数小结:类的非静态成员函数作为回调函数在类外定义接口函数在类内定义接口函数在类 A 内定义回调函数,在类 B 内定义接口函数方式一普通函数作为回调函数和C语言大致相同typedef int (*pGeneralFun)(int, int); // 定义函数指针int sum(int a, int b) { return
2022-03-31 16:55:46 273
原创 VS2019清理C++工程的bat文件
@echo offset CurrPath=%~dp0cd %CurrPath%del *.ncb /f /sdel *.plg /f /sdel *.pch /f /sdel *.idb /f /sdel *.ilk /f /sdel *.pdb /f /sdel *.obj /f /sdel *.exp /f /sdel *.aps /f /sdel *.opt /f /sdel *.sdf /f /sdel *.ipch /f /sdel *.tlog /f /s
2022-03-31 10:09:45 975
原创 C/C++字符串操作
这里写自定义目录标题减除字符串首位空格字符串切割1.C++实现2.C语言实现原型注意事项减除字符串首位空格void TrimSpace(std::string& str){ std::size_t off = 0; std::size_t end = str.size(); while (off < end) { if (str[off] == '\r' || str[off] == '\n' || str[off] == '\t' || str[off] == ' ')
2022-03-30 10:21:56 1378
原创 C语言常用API
字符串处理函数char* gets(char *s)从标准输入读入字符串,并保存到s所指的内存处,读到换行符或’\0’结束。char* fgets(char* s,int size,FILE* stream)从stream指定的文件读入字符,保存到s指定的空间内,知道出现换行符,文件结尾符或读了size-1个字符为止。如果输入的大小小于等于size会自动加上’\0’,如果大于size会加上’\n\0’int puts(const char *s)在标准输出中输出s,在输出完成后自动输出一个’\
2022-02-04 15:06:01 1319
转载 C/C++时间相关API
使用CRT函数C语言代码定时器chrono库(C++11)三个重要概念Durationsstd::chrono::duration 表示一段时间,比如两个小时,12.88秒,半个时辰,一炷香的时间等等,只要能换算成秒即可。ratio类型及其含义其中Rep表示一种数值类型,用来表示Period的数量,比如int float doublePeriod是ratio类型,用来表示【用秒表示的时间单位】比如second milisecond常用的duration已经...
2022-01-06 21:15:44 568
原创 Linux 进程、线程和信号
目录进程获取进程id/proc/PID 获取与进程相关的信息uname() 获取主机系统的标识信息fork() 创建子进程wait() 阻塞等待子进程结束守护进程、孤儿进程和僵尸进程信号线程进程获取进程id#include <unistd.h>pid_t getpid(void); //获取当前进程idpid_t getppid(void); //获取父进程id返回值: 成功返回当前/父进程id。/proc/PID 获取与进程相关的信息cat /proc/1/status
2022-01-03 18:41:47 1423
原创 GCC、GDB、makefile
目录GCC静态库动态库GDBmakefile命名规则三要素写法第一次改进第二次改进第三次改进GCC-I 用于指定包含文件的路径(比如头文件)-L 包含库的路径-l 指定库名-o 生成目标文件-c 编译成.o文件-g 用于gdb调试,不加此选项不能调试gdb-Wall 显示更过警告-D 指定宏编译-lstdc++ 编译C++代码-O 优化选项 1-3越高,优先级越高gcc -Wall hello.c -o hellogcc -c hello.s -
2022-01-03 14:38:51 565
原创 Linux IPC常用API
目录IPC管道pipe() 创建一个新管道mkfifo() 创建一个FIFOSocket通信原理:socket() 创建一个新的socketbind() 将socket绑定到地址listen() 监听接入连接accept() 接受连接connect() 连接到对等的socketrecvfrom() 接收数据报sendto() 发送数据报主机字节序与网络字节序相互转换函数IP地址转换函数System V IPC对象编程接口总结POSIX IPC对象编程接口总结共享内存System V 共享内存ftok() 产
2021-12-26 16:58:51 1848
原创 C/C++ I/O API
目录IO按行读取文件IO按行读取文件ifstream ifs;ifs.open(path,ios::in);if(ifs.is_open()){ char buf[1024] = {0}; while(ifs.getline(buf,sizeof(buf))) { std::string tmpStr = std::string(buf); std::cout << tmpStr << std::endl; }}ifs.close();...
2021-10-30 18:19:04 633
原创 Qt常用api
目录QStringQString与stdString相互转换QTableWidget添加一行自适应行高和列宽QStringQString与stdString相互转换QString转stdStringQString param;std::string(param.toLocal8Bit());stdString转QStringstd::string str;QString s = QString::fromLocal8Bit(str.c_str());QTableWidget添
2021-10-30 18:11:43 1867
原创 Windows IPC API
多线程1.CreateThreadHANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,SIZE_T dwStackSize,LPTHREAD_START_ROUTINE lpStartAddress,LPVOID lpParameter,DWORD dwCreationFlags,LPDWORD lpThreadId);•lpThreadAttributes,描述线程安全的结构体,默认传NULL.• dwStackS
2021-10-17 15:39:02 1130
原创 vs设置dll和lib等目录
设置x.dll 输出路径方法在右键项目的"属性"->连接器->常规, 然后在常规属性界面中的 “输出文件” 中填入自己想要x.dll文件的输出路径.设置x.lib 输出路径方法在右键项目的"属性"->连接器->高级, 然后在高级属性界面中的 “导入库” 项中填入自己想要x.lib文件的输出路径.常见问题但是在设置x.lib的输出路径时,发现如果你输入的路径中有某个文件夹不存在,那么文件会生成失败,并且提示无法链接到导入库项路径中的lib库.解决这个问题的方法是保证你设置的
2021-09-02 16:04:29 3083
原创 visual studio 动态/静态链接库引入
1.如果是自己打的库,在需要引用库的项目中新建include目录和lib目录,把头文件放在include目录下,库文件(.lib)放在lib目录下。如果是第三方库则直接进行第二步。2.在项目上右键点击属性——>c/c++——>常规——>附加包含目录,将include目录包含进去(最好用vs提供的宏来配置相对路径,比如boost库,编译完成好之后可以配置环境变量,重启电脑,vs中就会生成对应的宏)3.在项目上右键点击属性——>链接器——>常规——>附加库目录,用宏提
2021-04-06 22:11:27 2837
原创 Windows下Clion安装boost库
环境:Windows10 + Clion2020 + boost1.70.01.安装Clion网上去找安装包,推荐一个破解版的安装视频地址: https://www.bilibili.com/video/BV1vT4y1c7RQ?from=search&seid=162393815775008833682.下载boost去官网下载:www.boost.org下载第一个就可以(这是1.75版本的,我用的是1.70版本的)然后解压准备编译(目前新的版本可能都会用到vs工具):解压完成后
2021-03-28 20:49:57 5366 4
转载 idea隐藏.idea等不用的文件
1.在开发工具最左侧有个一file菜单,点击;在弹出的菜单中找到setting,点击;2.在设置页面中,找到editor并点击:3.在页面右侧,有一栏Ignore files and folders,可以在该栏下面的搜索框中输入;+想要隐藏的文件后缀,例如:;.idea;4.然后我们再返回去看项目,.idea文件已经隐藏掉了:...
2020-01-18 20:23:55 453
原创 C#连接Oracle数据库
c#连接Oracle方式很多,这里只说博主常用的一种。插件:Oracle.ManagedDataAccess环境:Oracle11g,visual studio20171.先创建好项目,然后点击工具栏上的“工具”——>“NuGet 包管理”——>“管理解决方案的NuGet程序包”2.在收搜框中输入Oracle.ManagedDataAccess,并下载3.在项目中引用Or...
2020-01-18 20:11:55 502
转载 模块结构图初涉
模块结构图是用于描述系统模块结构的图形工具,不仅描述了系统的子系统结构与分层的模块结构,还清楚地表示了每个模块的功能 模块:模块是可以组合,分解和更换的单元,是组成系统,易于处理的基本单位调用:在模块结构图中,用连接两个模块的箭头表示调用。箭头总是由调用模块指向被调用模块,但是应该理解成被调用模块执行后又返回到调用模块数据:当一个模块调用另一个模块时,调用模块可以把数据传送到被调用模块处...
2019-12-07 11:08:05 31823 4
原创 Python(VS2017开发环境)导入文件夹中的模块
在VS2017环境下导入文件夹中的模块可能会出现“Unable to resolve xxx.IntelliSense may be missing for this module”的情况。 解决方法:比如要在Main文件夹中的Main模块中导入Module文件夹下的Card,Person模块: 右击搜索路径。选择 “将文件夹添加到搜索路径”, 选择“Module”文件夹,点击 “选择文件...
2019-08-01 08:48:56 1639 1
原创 Powerdesigner物理模型设置约束条件
主键:双击实体进入,属性界面点击keys选项卡,选中主键,右击点击properties(属性)红圈内自定义主键名称2.外键双击reference,选择integrity(完整性)选项卡,自定义外键名称3.CHECK约束方法一(列约束):双击实体进入,属性界面点击column选项卡,选中要添加约束的字段名,右击点击properties(属性)点击additional che...
2019-07-01 16:03:17 3697
原创 IntelliJ IDEA2018连接oralce数据库
1.打开IDEA,点击Datebase,点击加号2.选择Datasoure,选择oracle3.Driver选择Oracle(如果没有自己根据提示下载驱动)SID:自己的数据库名称,Port:端口号,再输入密码和用户名进行Test Connection,显示Successful即可点击确定,表示连接成功。4.新建项目,并输入代码测试:新建项目后,点击文件–>项目结构---->...
2019-06-04 14:54:31 937
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人