以下基于ASCII码,如果换做Unicode则应该做相应的变动,否则回出现过程错误。
string 转 CString
CString.format("%s", string.c_str());
char 转 CString
CString.format("%s", char*);
char 转 string
string s(char *);
string 转 char *
char *p = string.c_str();
CString 转 string
string CStringTostring(CString str)
{
string s;
s.append(str.GetBuffer(str.GetLength()));
str.ReleaseBuffer();
return s;
}
1,string -> CString
CString.format("%s", string.c_str());
用c_str()确实比data()要好.
2,char -> string
string s(char *);
你的只能初始化,在不是初始化的地方最好还是用assign().
《C++标准函数库》中说的
有三个函数可以将字符串的内容转换为字符数组和C—string
1.data(),返回没有”{post.content}“的字符串数组
2,c_str(),返回有”{post.content}“的字符串数组
3,copy()
---------------------------------------------------------------
CString与int、char*、char[100]之间的转换- -
CString与int、char*、char[100]之间的转换- -
CString互转int
将字符转换为整数,可以使用atoi、_atoi64或atol。
而将数字转换为CString变量,可以使用CString的Format函数。如
CString s;
int i = 64;
s.Format("%d", i)
Format函数的功能很强,值得你研究一下。
void CStrDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CString
ss="1212.12";
int temp=atoi(ss);
CString aa;
aa.Format("%d",temp);
AfxMessageBox("var is " + aa);
}
sart.Format("%s",buf);
CString互转char*
///char * TO cstring
CString strtest;
char * charpoint;
charpoint="give string a value";
strtest=charpoint;
///cstring TO char *
charpoint=strtest.GetBuffer(strtest.GetLength());
此处如果为Unicode编码,则应将char*改为wchar*,否则读取的只有strtest的首字母,切忌最后的strtest.ReleaseBuffer()。
标准C里没有string,char *==char []==string
可以用CString.Format("%s",char *)这个方法来将char *转成CString。要把CString转成char *,用操作符(LPCSTR)CString就可以了。
CString转换 char[100]
char a[100];
CString str("aaaaaa");
strncpy(a,(LPCTSTR)str,sizeof(a));
posted @
2010-03-03 10:48 人生在于攀登! 阅读(412) |
评论 (0) |
编辑 收藏
CreateThread
1HANDLE CreateThread(
2 LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to security attributes
3 DWORD dwStackSize, // initial thread stack size
4 LPTHREAD_START_ROUTINE lpStartAddress, // pointer to thread function
5 LPVOID lpParameter, // argument for new thread
6 DWORD dwCreationFlags, // creation flags
7 LPDWORD lpThreadId // pointer to receive thread ID
8);
9
参数信息:lpThreadAttributes 安全属性结构体指针
dwStackSize 分配给新线程的堆大小
lpStartAddress 只想新线程的入口函数 格式如下:
线程函数入口
1DWORD WINAPI FunName(
2 LPVOID lpParameter
3)
补充注意:入口函数不一定必须是上述格式(上述格式是msdn中提及的标准格式)
可以自定义函数,但是创建线程时必须函数类型转换,示例如下:
1void fun(int &n)
2{
3 cout<<"sdf"<<endl;
4 cout<<n<<endl;
5}
6int n=10;
7HANDLE hThread3;
8 hThread3=CreateThread(NULL,0,(unsigned long (__stdcall *)(void *))fun,&n,0,NULL);
lpParameter 线程函数的参数
dwCreationFlags 创建标志(0 or CREATE_SUSPENDED)
lpThreadId 新线程ID的接收变量
返回:成功返回句柄对象(HANDLE对象) 否则返回NULL GetLastError()返回错误信息
实例:
hThread1=CreateThread(NULL,0,ThreadFun1,NULL,0,NULL);
DWORD WINAPI ThreadFun1(
LPVOID lpParameter
)
{
cout<<"df"<<endl;
return 0;
}
1BOOL CloseHandle(
2 HANDLE hObject // handle to object to close
3);
4
关闭HANDLE句柄
CreateMutex
1HANDLE CreateMutex(
2 LPSECURITY_ATTRIBUTES lpMutexAttributes,
3 // pointer to security attributes
4 BOOL bInitialOwner, // flag for initial ownership
5 LPCTSTR lpName // pointer to mutex-object name
6);
7
参数信息:lpMutexAttributes 安全属性结构体指针 NULL是为默认的安全描叙符
bInitialOwner 为真时调用线程创建互斥对象,调用线程拥有互斥对象 为假时调用线程不拥有互斥对象
lpName 互斥对象的名称
WaitForSingleObject
1DWORD WaitForSingleObject(
2 HANDLE hHandle, // handle to object to wait for
3 DWORD dwMilliseconds // time-out interval in milliseconds
4);
5
参数信息:hHandle Mutex对象(临界区)
dwMiliseconds 时间间隔(毫秒),超过时间间隔函数就返回 为0时马上返回 为INFINITE时用不返回
返回:失败返回WAIT_FAILED 否则返回一个引发这个函数的事件
ReleaseMutex
1BOOL ReleaseMutex(
2 HANDLE hMutex // handle to mutex object
3);
4
返回:成功返回非零数 否则返回0
posted @
2009-08-30 14:18 人生在于攀登! 阅读(234) |
评论 (0) |
编辑 收藏
C语言编程练习题目: A出版社、B出版社是图书出版发行领域的巨头,A出版社出版的书籍种类涉及科技、外文、社科、卫生、生活、体育等方面;B 出版社出版的书籍种类涉及科技、社科、卫生、生活、体育、教育等方面。 C 书店、D书店、E 书店是 3 家著名的图书销售商,C 书店以销售科技类书图书闻名,同时也销售外文、教育类书籍;D书店以销售外文书籍店闻名,同时兼营科技、社科、教育类书籍;E 书店为销售图书种类最完全而著名,书籍种类包括科技、外文、社科、卫生、生活、体育、教育等方面。 F、G是两个典型的图书购买者(图书用户),定期或不定期的去 E 书店买书;其中 F 是一个个人用户,对科技、体育、生活类图书非常感兴趣,对这 3 类图书是逢书必买;G是一个单位用户,它对所有类的图书都感兴趣。 实体 A、B、C、D、E、F、G工作过程参见附一。 各个实体的初始化描述参见附二 题目要求: 请在Window下的VC6.0环境下,使用Win32 Console Application方式并采用多线程编程方式来模拟实体 A、B、C、D、E 之间的工作过程。 具体要求: 1.出版社、书店、图书用户作为独立的单位,各自内部信息相互保密,一般不随意暴露: 2.出版社给书店提供以下接口: 注册接口: 供书店用户登陆注册自己的信息,便于发定购通知; 参数信息: 书店 ID、 书店经营图书的种类、 通知的 Callback 函数 等等 查询接口: 供书店用户定购前查询; 参数信息: 图书种类 查询种类(全部、新书、再版) 查询结果返回 等等 定购接口: 供书店来定购书籍; 参数信息: 书店 ID 图书名 购买数量 联络方式的 Callback(上次不足图书的再版通知) 等等 3.书店(特别是 E 书店)给图书购买者提供以下接口:查询接口: 供图书购买者购买前进行查询; 参数信息: 图书种类查询种类(全部、新书、再版) 查询结果返回 等等 购买接口: 供图书购买者进行购买; 参数信息: 购买者ID 图书名称 购买数量 联络方式的Callback(上次不足图书的到货通知) 等等 4.在主线程中,控制各个实体的初始化、上述模拟活动的开始和停止; 5.出版社、书店、图书购买的工作活动按照时间顺序输出到文件work.txt中; 6.为了验证程序执行的正确性,各个实体(A、B、C、D、E、F、G)都应记载数据, 出版社应记录: 出版(再版)书目、 库存量、销售量、销售明细(每次销售给那个书店多少册)、定购书目数量以及明细(每次向谁定购了什么书、多少本)、销售书目数量以及明细 图书购买者:记录购买书目数量以及明细。以上信息每隔30秒输出一次,以便于核对程序执行的正确性。 7.程序要考虑使用良好的程序结构和数据结构、程序讲求效率。 附一A、B、C、D、E的工作描述 一、关于出版社工作 1.1出版 出版类型: 出版图书类型:新书、再版(主要是由于销售好而再版); 出版数量:新书出版的数量 A、B出版社:每隔10秒出版一种新图书,每次1000册,即 A出版图书的顺序为:科技(1000)->外文(1000)->社科(1000)->卫生(1000)->生活(1000)->体育(1000)->科技(1000); B出版图书的顺序为:科技(1000)->社科(1000)->卫生(1000)->生活(1000)->体育(1000)->教育(1000)->科技(1000) 再版图书的数量以及再版 当出现缺货时进行再版,每个书再版的数量为 (1)再版500册(当缺货数量<=500册时); (2)大于缺货数量并为1000的整数倍(当缺货数量>500册时); 再版请求要进行管理,每次再版不花时间。 出版书目相关信息 书目信息包括:编号、书名、种类、出版社等。 1.2发行(销售) 具体工作包括: 发行通知: 出版新书,向所有订阅此分类的书店通知, 再版,只通知订购此种图书但因缺货没买到书的书店。接受书店定购:如有货,则发货 否则,存货部分进行销售(同步完成),剩余部分转再版处理(异步完成); 并且定购接口中,要有书店的信息,以便于再版后的通知(对上次购买不足的书店)。 1.3提供书目查询服务提供向书店提供书目查询服务,查询分类查书目、库存等。 提供查询希望能够讲求效率。 二、关于书店工作 2.1定购工作 定购分类两类:一类是主动定购、另一类是被动定购; 被动定购:接到书店定购通知后去定购; 主动定购:当前书店销售库存为0,而发生的定购; 每次定购不限于一种图书。 定购前,应该进行相关书目信息的查询。 E书店接到新书通知后每次订购200册 如果书店定购的图书,出版社货不足,则库存有多少购买多少,不足部分等到图书再版后通知再购买。(例如要购买500本,而库存只有300本,则先购300本,剩下200本等到再版后再购买) 三、关于图书购买者 G是一个单位用户,对科技、外文、社科、卫生、生活、体育、教育类图书都感兴趣,不定期从E书店购买新书,每次购买的数量是一个随机数(小于500); 这里的不定期可以认为G每隔几秒(小于8的随机数)到E书店查询一次,看看是否有新书,如果有新书则一定购买新书,否则随机购买一种原有的书,如果货物不足,则库存有多少购买多少,不足部分等到书店通知到货后再购买。(例如要购买50本,而库存只有30本,则先购30本,剩下20本等到书店到货后再购买) 附二 系统的初始化描述 A出版社、B出版社、 C书店、 D书店、 E书店、F图书购买者、G图书购买者初始的数据都为空。 活动开始的顺序为: 1. A、B出版社开始出书 2. 出版后,出版社通知注册的书店(C、D、E),来定购; 3. 书店定购后,开始图书销售; 4. 图书购买者(G)定期到书店买书; 练习要求:先模拟出版社A,书商E,图书购买者G的交易过程,其余待完善
posted @
2009-08-03 17:10 人生在于攀登! 阅读(246) |
评论 (2) |
编辑 收藏
摘要: 主要源代码:
void CSpellGraphicDlg::OnUp() { // TODO: Add your control notification handler code here if (p.currentPoint/3==0) { &...
阅读全文
posted @
2009-08-03 15:37 人生在于攀登! 阅读(198) |
评论 (0) |
编辑 收藏
int getNum(int a,int b,int c,int d,int e){
static long int num=0;
static int startPointA=a,startPiontB=b;
if (startPointA==a && startPiontB==b && num!=0)
{
return 0;
}
if ((b+d)%e==(a+c)%e)
{
return num+1;
}
else{
num++;
return getNum((a+c)%e,(b+d)%e,c,d,e);
}
return 0;
}
int main(){
int startPointA,startPointB,longA,longB,totalLong;
printf("请依次输入青蛙A的起始点、青蛙B的起始点、青蛙A依次跳跃距离、青蛙B依次跳跃距离和总长度:");
scanf("%d %d %d %d %d",&startPointA,&startPointB,&longA,&longB,&totalLong);
while (startPointA==startPointB)
{
printf("你输入数据有误,请重新输入:");
scanf("%d %d %d %d %d",&startPointA,&startPointB,&longA,&longB,&totalLong);
}
int num=getNum(startPointA,startPointB,longA,longB,totalLong);
if (longA==longB || num==0)
{
printf("Impossible\n");
}
else
{
printf("%d\n",num);
}
return 0;
}
posted @
2009-08-03 11:31 人生在于攀登! 阅读(474) |
评论 (0) |
编辑 收藏
void find1(char array[3],char search,char** pa){
int i;
for (i=0;*(array+i)!='\0';i++)
{
if (*(array+i)==search)
{
*pa=array+i;
break;
}
else if (*(array+i)==0)
{
pa=0;
break;
}
}
}
int main(){
char array[]="dfyhgfhfhrtsxfvgsdfgdfgcsdtwe";
char search='c';
char *pa;
pa=(char*)malloc(100);//必须给pa分配地址值
find1(array,search,&pa);//必须使用指针地址作为实参才能修改指针所指内容
printf("%c\n",*pa);
return 0;
}
posted @
2009-08-03 10:16 人生在于攀登! 阅读(196) |
评论 (0) |
编辑 收藏
//回调函数
void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nIDEvent,DWORD dwTime){
CTime time=CTime::GetCurrentTime();
CString str=time.Format("%H:%M:%S");
m_Time.SetWindowText(str);
}
//SetTimer函数调用
CWnd::SetTimer(1,1000,TimerProc);
编译出错,错误信息如下:
C:\Documents and Settings\ttc\桌面\C_workplace\System_Time\System_TimeDlg.cpp(164) : error C2664: 'SetTimer' : cannot convert parameter 3 from 'void (struct HWND__ *,unsigned int,unsigned int,unsigned long)' to 'void (__stdcall *)(struct HWND__ *,un
signed int,unsigned int,unsigned long)'
None of the functions with this name in scope match the target type
这是为什么???
期待高手解决!
posted @
2009-07-31 10:54 人生在于攀登! 阅读(729) |
评论 (3) |
编辑 收藏