cstring

Windows编程 Windows下Unicode编码

╄→尐↘猪︶ㄣ 提交于 2020-04-01 04:19:56
我们知道在ascii编码,每个字符占用一个字节,这样能够表示的字符数远远不够表示世界所有语言的符号,所以Unicode编码就是出现了,当然Unicode也有8位 16位 32位的编码,UTF-8、UTF-16、UTF-32分别以char、char16_t、char32_t作为编码单位,本文讨论16位 即UTF-16,(注: char16_t 和 char32_t 是 C++ 11 标准新增的关键字。如果你的编译器不支持 C++ 11 标准,请改用 unsigned short 和 unsigned long。) 当然本文着重讨论Unicode在Windows中的应用,至于具体细节以及原理上的东西,本人才疏学浅,不配在此谈论此问题,呵呵。还请各位到Google去寻找大牛吧。。由于个人能力有限,文中难免有错误之处,还请各位多多批评和指正,多多包涵才是。 许久以前我在学习MFC的过程中,用GetDlgItemText获取Edit Control的值,其得到的值是CString,我们看下该函数的原型: int GetDlgItemText( HWND hDlg , int nID, LPTSTR lpStr, int nMaxCount) const; int GetDlgItemText( int nID, CString& rString) const;

NOIP 前夕 模板整理

时间秒杀一切 提交于 2020-03-30 16:07:33
归并排序: 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 int a[1200],s[1200],n; 6 void megre_sort(int l,int r) 7 { 8 if(l==r) return ; 9 int mid=(l+r)/2; 10 megre_sort(l,mid);megre_sort(mid+1,r); 11 int i=l,j=mid+1,k=l; 12 while(i<=mid&&j<=r) 13 { 14 if(a[i]<=a[j]) 15 s[k++]=a[i++]; 16 else 17 s[k++]=a[j++]; 18 } 19 while(i<=mid) 20 s[k++]=a[i++]; 21 while(j<=r) 22 s[k++]=a[j++]; 23 for(int i=1;i<=r;i++) 24 a[i]=s[i]; 25 } 26 int main() 27 { 28 scanf("%d",&n); 29 for(int i=1;i<=n;i++) 30 scanf("%d",&a[i]); 31 megre_sort(1,n); 32 for(int i=1;i<=n;i++) 33 printf

ODBC读、写Excel表格文件

*爱你&永不变心* 提交于 2020-03-29 06:27:13
首先,我们要明白的是,VC是通过ODBC来访问Excel表格的,也就是说,VC将Excel表格,当作数据库来处理。当然了,也可以通过读以tab键隔开的文件来处理这样的文件,但是,我还是更加愿意用读取数据库的方式来访问Excel表格。 第二,既然是数据库,那么,就需要建立一个与该库对应的dsn,这个,而且,在建立dsn之前,首先要确定,已经安装了Excel的驱动。 第三,要访问数据库中的表格,就要先打开该表格,如此,就需要一个与之对应的RecordSet 想要通过ODBC直接读、写Excel表格文件,首先,应确保ODBC中已安装有Excel表格文件的驱动"MICROSOFT EXCEL DRIVER (*.XLS)"。然后,可根据下面步骤进行: 1. 在StdAfx.h文件中加入 : #include <afxdb.h> #include <odbcinst.h> 2. 通过ODBC直接创建Excel文件并在表中插入数据 (暂定文件名:Demo.xls) //创建并写入Excel文件 void CRWExcel::WriteToExcel() { CDatabase database; CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; // Excel安装驱动 CString sExcelFile = "c:\\demo.xls"

技巧--对拍

荒凉一梦 提交于 2020-03-24 07:09:25
yzh老师在清北学堂最后一天教的对拍: 创建一个文件夹 将你要对拍的源代码copy进去(例:test.cpp) 将你写好且 确定无误 的暴力代码也放进去,注意两者名字要有所区别(例:test__.cpp) 搞一个生成数据的代码(例:mkdata.cpp) #include<cstdio> #include<cstdlib> #include<cstring> #include<ctime> #define For(i,l,r) for(int i=l;i<=r;i++) int main(){ freopen("coin.in","w",stdout); srand(time(0)); int n = 1000; // printf("%d\n",n); For(i,1,n) printf("%lf %lf\n",(rand()%200+100)/100.0,(rand()%200+100)/100.0); } 这段代码能生成n行每行两个大于1, 且在1~3之间的高精浮点数 (佬师太喜欢用宏定义了) 最后撸个bat脚本 :loop mkdata test test__ fc test.out test__.out if errorlevel == 1 pause goto loop loop表示循环,然后是你要打开的.exe 所以注意,在打开脚本前我们一定要 先运行一遍代码生 成

使用MFC类CDatabase、recordset实现查询数据库

久未见 提交于 2020-03-12 17:25:47
一、软件界面 二、源码 // demoDlg.cpp : 实现文件 // #include "stdafx.h" #include "demo.h" #include "demoDlg.h" #include "afxdialogex.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // 用于应用程序“关于”菜单项的 CAboutDlg 对话框 class CAboutDlg : public CDialogEx { public: CAboutDlg(); // 对话框数据 enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 实现 protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END

CString 字符串内容截取 样例(待续)

北战南征 提交于 2020-03-09 11:01:32
CString s("abcdefghijklmn");//14个 CString s1 = _T(""); CString s2 = _T(""); CString s3 = _T(""); CString s4 = _T(""); int mm = s.Find('b');//mm是 下标 1 printf("%d",s.Find('b')); ASSERT(s.Find('b') == 1); mm=s.Delete(0, 2);//下标 0 开始2个长度 14个长度删除2个 mm=12 s1 = s;//cdefghijklmn 删除后的字符串 s2 = s.Left(2);//只要字符串左边的2个字符 就是cd s3 = s.Mid(3,2);//下标3 开始的2个长度字符 就是fg s4 = s.Right(3);//只要字符串右边的3个字符 就是lmn CStringA strTemp_1 = "abcde"; if (_T("abcde") == strTemp_1) { printf(" 失败!"); } 来源: CSDN 作者: 倒斗拉比 链接: https://blog.csdn.net/qq_34684524/article/details/104745769

CListCtrl控件的使用指南

和自甴很熟 提交于 2020-03-08 11:22:13
创建图形列表并和CListCtrl关联: m_image_list.Create(IDB_CALLER2, 16, 10, RGB(192,192, 192)); m_image_list.SetBkColor( GetSysColor( COLOR_WINDOW ) ); m_caller_list.SetImageList( &m_image_list, LVSIL_SMALL); 为报表添加4列: char *szColumn[]={"昵称","IP地址","登陆时间","状态"}; int widths[]={100,98,70,55}; LV_COLUMN lvc; lvc.mask=LVCF_FMT|LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM; lvc.fmt=LVCFMT_LEFT; for(int i=0;i<4;i++) {//插入各列 lvc.pszText=szColumn[i]; lvc.cx=widths[i]; lvc.iSubItem=i; m_caller_list.InsertColumn(i,&lvc); } 为报表添加两项,以附加方式添加: char* data[4]; data[0]="所有人"; data[1]="0.0.0.0"; data[3]="在线"; data[2]=new char; CTime now

CListCtrl控件使用详解

喜夏-厌秋 提交于 2020-03-08 11:21:19
1.CListCtrl控件 CListCtrl控件在数据库编程中是用得比较多的控件之一,也是Window控件中较难掌握的一个控件。他可以有四显示方式,Report、List、Icon、SmallIcon。Report报告式列表视图方式在数据库开发中是最常用的一种方式。在控件"properties"的Styles选项卡中在View项可以选择Report方式。Report方式中列表控件的显示方式是有行和列的,行又叫做Item,但有多列是我们只能操作每一行的第零列,也就是最前列。 2.与CListCtrl控件相关的数据类型 (1)LV_COLUMN结构 该结构仅用于报告式列表视图,用来描述表项的某一列。要想向表项中插入新的一列,需要用到该结构。 LV_COLUMN结构定义如下: typedef struct_LV_COLUMN{ UINT mask; //屏蔽位的组合,表明哪些成员是有效的 int fmt; //该列的表头和子项的标题显示格式(LVCF_FMT) int cx; //以象素为单位的列的宽度(LVCF_FMT) LPTSTR pszText; //指向存放列表头标题正文的缓冲区(LVCF_TEXT) int cchTextMax; //标题正文缓冲区的长度(LVCF_TEXT) int iSubItem; //说明该列的索引(LVCF_SUBITEM) }LVCOLUMN;

ListControl

纵然是瞬间 提交于 2020-03-08 11:10:08
一、基本使用 1.新加ListControl 控件,属性中的style属性页下的View选择Report。 并设置其对应的控制变量如:m_list1。 2.初始化,即设置列。 用m_list1。 m_list1.InsertColumn(0,"曲名"); //插入列 m_list1.InsertColumn(1,"类型"); m_list1.InsertColumn(2,"长度"); m_list1.InsertColumn(3,"路径"); CRect rect4; m_list1.GetClientRect(rect4); //获得当前客户区信息 m_list1.SetColumnWidth(0,rect4.Width()/4); //设置列的宽度。 m_list1.SetColumnWidth(1,rect4.Width()/5); m_list1.SetColumnWidth(2,rect4.Width()/5); m_list1.SetColumnWidth(3,rect4.Width()*8/20); 这部分初始化操作,最好放在对话框类的OnInitDialog()函数里,自动初始化。 3.插入数据 m_list1.InsertItem(0,"大海"); //插入第一个数据,即第0条数据。先插入,然后在修改其他的信息。 m_list1.SetItemText(0,1,

B+树

孤街浪徒 提交于 2020-02-29 15:46:34
#ifndef __GOODSTREE_H__ #define __GOODSTREE_H__ #define M 200 // 树的枝数。 #define MAX_NUM 60 // 树的深度。 typedef struct _head{ long root; long head; long tail; long number; }Head; template <class T> class TreeNode{ public: int n; long a[M+1]; T key[M]; long prev; long next; BOOL IsLeaf; }; ////////////////////////////////////////////////////////////////// // CGoodsTree 是M路B+树. template <class T> class CGoodsTree{ public: CGoodsTree(){ m_head.root = -1; m_IsUsed = 0;}; ~CGoodsTree(){}; public: BOOL Open(CString& FileName); void Close(); BOOL InsertNode(T& x); BOOL ChangeNode(T& x); BOOL DeleteNode(T&