
C++基础语法
(-: LYSM :-)
这个作者很懒,什么都没留下…
展开
-
char*, wchar_t* 替换子串
char* replace_a(char*s1,char*s2,char*s3=NULL){ char *p,*from,*to,*begin=s1; int c1,c2,c3,c; //串长度及计数 c2=strlen(s2); c3=(s3!=NULL)?strlen(s3):0; if(c2==0)return s1; //注意要退出 while(true) //替换所有出现的串 { .转载 2021-05-10 16:49:52 · 479 阅读 · 0 评论 -
C++ 获取类成员函数地址,并通过地址调用函数
class BaseWithoutV {public: void func1() { MessageBox(0, "BaseWithoutV func1", "", 0); } void func2() { MessageBox(0, "BaseWithoutV func2", "", 0); }private: int m_data1, m_data2;};int main(){ // 这里打印的可能不是 MessageBox 的上层函数,因为 &BaseWi原创 2021-02-05 17:49:12 · 2863 阅读 · 0 评论 -
内联汇编
什么是内联汇编内联汇编是指在 C/C++ 代码中嵌入的汇编代码,与全部是汇编的汇编源文件不同,它们被嵌入到 C/C++ 的大环境中。内联汇编方式两个作用,一是程序的某些关键代码直接用汇编语言编写,可提高代码的执行效率;二是有些操作无法通过高级语言实现,或者实现起来很困难,必须借助汇编语言达到目的。x86 内联汇编使用内联汇编要用到 __asm 关键字,它可以出现在任何允许 C/C++ 语句出现的地方。对 __asm 关键字的使用有两种方式:// 1.__asm { // 汇编代码 }原创 2020-06-30 22:07:57 · 5795 阅读 · 1 评论 -
C++ map 用法
定义:// 可以把 "类型一" 理解为 key,"类型二" 理解为 valuestd:map<类型一, 类型二> myMap;初始化:std::map<CHAR*, INT> myMap = { {"key1",1}, {"key2",2}, {"key3",3}};添加:std::map<CONST CHAR*, INT> myMap;...原创 2020-04-13 23:27:04 · 219 阅读 · 0 评论 -
C++ wcout 输出中文
// 设置中文显示wcout.imbue(locale("chs"));// 测试wcout << L"中文" << endl;原创 2020-04-05 19:19:29 · 665 阅读 · 0 评论 -
C++ cout 进制输出
输出 16进制: cout << hex << 100 << endl;输出 10进制: cout << dec << 100 << endl;输出 8进制: cout << oct << 100 << endl;输出 2进制:#include <bitset>...原创 2020-04-01 09:33:00 · 510 阅读 · 0 评论 -
C++ 宽字节拷贝
WCHAR wcarr1[100] = L"asd"; WCHAR wcarr2[100] = {0}; wcsncpy_s(wcarr2,wcarr1,sizeof(wcarr2)); wcout << wcarr2 << endl;效果图:原创 2020-03-26 09:47:14 · 1500 阅读 · 0 评论 -
C++ string 替换子串
代码:#include <iostream>#include <windows.h>#include <string>using namespace std;int main(){ string s = "abc123def"; s.replace( s.find("123"), // 被替换的位置 3, // 被替换的大...原创 2020-02-27 17:43:37 · 2134 阅读 · 0 评论 -
C++ string 大小写转换
代码:#include <iostream>#include <windows.h>#include <string>#include <algorithm>using namespace std;int main(){ string s1 = "AbCdEfG"; transform( s1.begin(), // 原容器...原创 2020-02-27 15:23:18 · 420 阅读 · 0 评论 -
C++ 链表
代码:// Test_Console_3.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include<cstdlib>using namespace std;// 链表结构体typedef struct listpoint{ int data; // 数据 li...原创 2020-02-05 21:25:16 · 440 阅读 · 0 评论 -
C++ 父类子类访问权限
原创 2020-01-30 12:03:20 · 856 阅读 · 0 评论 -
C++ 类型强转
class A {};class B : public A {};int main(){ // static_cast:在编译期间完成类型转换 float f_a = 1.123456; cout << "f_a = " << f_a << endl; int i_a = static_cast<int>(f_a); cout...原创 2020-01-25 22:59:52 · 298 阅读 · 0 评论 -
C++ 中的 string 在内存中的位置
我们先不考虑 string 的实质是什么,先做一个实验。执行如下代码:int _tmain(int argc, _TCHAR* argv[]){ string temp = "LYSM"; getchar(); return 0;}调试查看 temp 的地址:修改代码为:int _tmain(int argc, _TCHAR* argv[]){ string temp...原创 2020-01-03 17:16:07 · 4482 阅读 · 0 评论 -
C++ 使用 Singleton 实现单实例
代码:// Test_Console.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>#include <Windows.h>#include <iomanip>#include <fstream>#include<cstdlib>#include...原创 2020-01-03 10:12:46 · 254 阅读 · 0 评论 -
C++ 函数名前的 '&'
函数名前的 ‘&’ 可以让你用 &函数名() 的方式获取返回值的地址。这种方法可不等同于新创建一个变量,用这个变量接收返回值,然后再用 &变量 的方式获取地址(我们都知道新创建的变量的内存地址是重新开辟的内存,和函数的返回值地址没有任何关系)。// Test_Console.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#inc...原创 2020-01-02 18:41:10 · 6518 阅读 · 1 评论 -
C++ sizeof(a)/sizeof(a[0]) 的正确用法
sizeof(a)/sizeof(a[0]) 可以获取数组的长度,原理是 sizeof(a) 代表整个数组的大小,sizeof(a[0]) 代表数组中第一个元素的大小,而数组中的每个元素大小都是相同的,所以最后的计算结果就是数组的长度。但并不是所有情况下都可以用这种方法计算数组长度,看下这段代码:#include "stdafx.h"#include <iostream>#in...原创 2019-12-31 17:29:58 · 19998 阅读 · 0 评论 -
C++ 根据分隔符分割字符串为 vector 字符串数组
// 功能函数 vector<string> subStrToVec(string str,char sep){ vector<string> vecArr; int flagSub = 0; for(int i=0;i<str.length();i++){ if(str[i] == '|'){ string temp = str.sub...原创 2019-10-23 15:09:43 · 1822 阅读 · 0 评论 -
C++ vector 用法
参考资料创建: // 默认 vector<T> vecArr; // 初始化指定内容 //vector<T> vecArr = {x,x,x,x,x,x}; // 初始化指定大小 vector<T> vecArr(大小); // 初始化指定大小和指定值 vector<T> vecArr(大小,值);赋值: ve...原创 2019-10-23 14:42:03 · 135 阅读 · 0 评论 -
C++ cin 用法(全)
接收一个字符: // 方法1 变量 = cin.get(); // 方法2 cin.get(变量);连续接收多个变量: cin >> 变量一 >> 变量二 >> 变量三;接收一整行: // 方法1 getline(cin, 你的变量, '\n'); // 方法2 char array[20]={NULL}; cin.get...原创 2019-10-23 10:26:17 · 1341 阅读 · 0 评论 -
C++ 类型转换(全)
string 转 intint number = stoi(string类型字符串);10进制 转 16进制char buf[24];_itoa(十进制整形变量, buf, 16);string 转 char[]char arr[256];strcpy(arr,你的字符串.c_str());...原创 2019-10-22 11:50:46 · 525 阅读 · 0 评论 -
C++ char[] 转 DWORD、DWORD - string 互转
char[] 转 DWORD// keyValue 为 char[]DWORD dw_keyValue = keyValue[0] | keyValue[1] << 8 | keyValue[2] << 16 | keyValue[3] << 24;DWORD - string 互转// string 转 dwordDWORD stringToDwo...原创 2019-10-21 16:45:57 · 3696 阅读 · 1 评论 -
C++ 获取 string 中某个字符首次出现的位置
// 没有找到返回 -1,找到返回字符对应的下标int getStrSub(string str,char ch){ int result = -1; for(int i=0;i<str.length();i++){ if(str[i] == ch){ result = i; } } return result;}...原创 2019-10-16 12:27:38 · 3538 阅读 · 0 评论 -
C++ 删除字符串中的子串
int flag = 0;while ((flag = 父字符串.find(子字符串)) != -1){ 父字符串.erase(flag, 子字符串长度);}原创 2019-08-05 10:26:07 · 550 阅读 · 0 评论 -
C++ 在字符串中查找子字符串(最简单)
string str= "test123";if(!str.find("st")){ cout << "找到子字符串" << endl;}原创 2019-08-27 20:15:13 · 7110 阅读 · 0 评论 -
C++ 编码规范
原创 2019-09-03 09:13:07 · 192 阅读 · 0 评论 -
C++ 截取 char[]
strncpy( char *dest, // 截取后的数组 const char *src, // 被截取的数组 size_t n // 截取长度);原创 2019-10-11 17:25:18 · 8304 阅读 · 0 评论 -
C++ 解决 string 转 char* 乱码
char* stringToCharP(std::string str){ // 初始化 result char* result = new char[str.length()+1]; // 赋值 result strcpy_s(CreationTime,str.length()+1,str.c_str()); return result;}原创 2019-10-11 18:43:53 · 1655 阅读 · 0 评论