以下基于ASCII碼,如果換做Unicode則應(yīng)該做相應(yīng)的變動(dòng),否則回出現(xiàn)過程錯(cuò)誤。
string 轉(zhuǎn) CString
CString.format("%s", string.c_str());
char 轉(zhuǎn) CString
CString.format("%s", char*);
char 轉(zhuǎn) string
string s(char *);
string 轉(zhuǎn) char *
char *p = string.c_str();
CString 轉(zhuǎn) 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()確實(shí)比data()要好.
2,char -> string
string s(char *);
你的只能初始化,在不是初始化的地方最好還是用assign().
《C++標(biāo)準(zhǔn)函數(shù)庫》中說的
有三個(gè)函數(shù)可以將字符串的內(nèi)容轉(zhuǎn)換為字符數(shù)組和C—string
1.data(),返回沒有”{post.content}“的字符串?dāng)?shù)組
2,c_str(),返回有”{post.content}“的字符串?dāng)?shù)組
3,copy()
---------------------------------------------------------------
CString與int、char*、char[100]之間的轉(zhuǎn)換- -
CString與int、char*、char[100]之間的轉(zhuǎn)換- -
CString互轉(zhuǎn)int
將字符轉(zhuǎn)換為整數(shù),可以使用atoi、_atoi64或atol。
而將數(shù)字轉(zhuǎn)換為CString變量,可以使用CString的Format函數(shù)。如
CString s;
int i = 64;
s.Format("%d", i)
Format函數(shù)的功能很強(qiáng),值得你研究一下。
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互轉(zhuǎn)char*
///char * TO cstring
CString strtest;
char * charpoint;
charpoint="give string a value";
strtest=charpoint;
///cstring TO char *
charpoint=strtest.GetBuffer(strtest.GetLength());
此處如果為Unicode編碼,則應(yīng)將char*改為wchar*,否則讀取的只有strtest的首字母,切忌最后的strtest.ReleaseBuffer()。
標(biāo)準(zhǔn)C里沒有string,char *==char []==string
可以用CString.Format("%s",char *)這個(gè)方法來將char *轉(zhuǎn)成CString。要把CString轉(zhuǎn)成char *,用操作符(LPCSTR)CString就可以了。
CString轉(zhuǎn)換 char[100]
char a[100];
CString str("aaaaaa");
strncpy(a,(LPCTSTR)str,sizeof(a));
posted @
2010-03-03 10:48 人生在于攀登! 閱讀(420) |
評(píng)論 (0) |
編輯 收藏

CreateThread
1
HANDLE 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
參數(shù)信息:lpThreadAttributes 安全屬性結(jié)構(gòu)體指針
dwStackSize 分配給新線程的堆大小
lpStartAddress 只想新線程的入口函數(shù) 格式如下:

線程函數(shù)入口
1
DWORD WINAPI FunName(
2
LPVOID lpParameter
3
)
補(bǔ)充注意:入口函數(shù)不一定必須是上述格式(上述格式是msdn中提及的標(biāo)準(zhǔn)格式)
可以自定義函數(shù),但是創(chuàng)建線程時(shí)必須函數(shù)類型轉(zhuǎn)換,示例如下:
1
void fun(int &n)
2

{
3
cout<<"sdf"<<endl;
4
cout<<n<<endl;
5
}
6
int n=10;
7
HANDLE hThread3;
8
hThread3=CreateThread(NULL,0,(unsigned long (__stdcall *)(void *))fun,&n,0,NULL);
lpParameter 線程函數(shù)的參數(shù)
dwCreationFlags 創(chuàng)建標(biāo)志(0 or CREATE_SUSPENDED)
lpThreadId 新線程ID的接收變量
返回:成功返回句柄對(duì)象(HANDLE對(duì)象) 否則返回NULL GetLastError()返回錯(cuò)誤信息
實(shí)例:
hThread1=CreateThread(NULL,0,ThreadFun1,NULL,0,NULL);
DWORD WINAPI ThreadFun1(
LPVOID lpParameter
)


{
cout<<"df"<<endl;
return 0;
}
1
BOOL CloseHandle(
2
HANDLE hObject // handle to object to close
3
);
4
關(guān)閉HANDLE句柄

CreateMutex
1
HANDLE 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
參數(shù)信息:lpMutexAttributes 安全屬性結(jié)構(gòu)體指針 NULL是為默認(rèn)的安全描敘符
bInitialOwner 為真時(shí)調(diào)用線程創(chuàng)建互斥對(duì)象,調(diào)用線程擁有互斥對(duì)象 為假時(shí)調(diào)用線程不擁有互斥對(duì)象
lpName 互斥對(duì)象的名稱

WaitForSingleObject
1
DWORD WaitForSingleObject(
2
HANDLE hHandle, // handle to object to wait for
3
DWORD dwMilliseconds // time-out interval in milliseconds
4
);
5
參數(shù)信息:hHandle Mutex對(duì)象(臨界區(qū))
dwMiliseconds 時(shí)間間隔(毫秒),超過時(shí)間間隔函數(shù)就返回 為0時(shí)馬上返回 為INFINITE時(shí)用不返回
返回:失敗返回WAIT_FAILED 否則返回一個(gè)引發(fā)這個(gè)函數(shù)的事件

ReleaseMutex
1
BOOL ReleaseMutex(
2
HANDLE hMutex // handle to mutex object
3
);
4
返回:成功返回非零數(shù) 否則返回0
posted @
2009-08-30 14:18 人生在于攀登! 閱讀(244) |
評(píng)論 (0) |
編輯 收藏
C語言編程練習(xí)題目: A出版社、B出版社是圖書出版發(fā)行領(lǐng)域的巨頭,A出版社出版的書籍種類涉及科技、外文、社科、衛(wèi)生、生活、體育等方面;B 出版社出版的書籍種類涉及科技、社科、衛(wèi)生、生活、體育、教育等方面。 C 書店、D書店、E 書店是 3 家著名的圖書銷售商,C 書店以銷售科技類書圖書聞名,同時(shí)也銷售外文、教育類書籍;D書店以銷售外文書籍店聞名,同時(shí)兼營科技、社科、教育類書籍;E 書店為銷售圖書種類最完全而著名,書籍種類包括科技、外文、社科、衛(wèi)生、生活、體育、教育等方面。 F、G是兩個(gè)典型的圖書購買者(圖書用戶),定期或不定期的去 E 書店買書;其中 F 是一個(gè)個(gè)人用戶,對(duì)科技、體育、生活類圖書非常感興趣,對(duì)這 3 類圖書是逢書必買;G是一個(gè)單位用戶,它對(duì)所有類的圖書都感興趣。 實(shí)體 A、B、C、D、E、F、G工作過程參見附一。 各個(gè)實(shí)體的初始化描述參見附二 題目要求: 請(qǐng)?jiān)赪indow下的VC6.0環(huán)境下,使用Win32 Console Application方式并采用多線程編程方式來模擬實(shí)體 A、B、C、D、E 之間的工作過程。 具體要求: 1.出版社、書店、圖書用戶作為獨(dú)立的單位,各自內(nèi)部信息相互保密,一般不隨意暴露: 2.出版社給書店提供以下接口: 注冊(cè)接口: 供書店用戶登陸注冊(cè)自己的信息,便于發(fā)定購?fù)ㄖ?參數(shù)信息: 書店 ID、 書店經(jīng)營圖書的種類、 通知的 Callback 函數(shù) 等等 查詢接口: 供書店用戶定購前查詢; 參數(shù)信息: 圖書種類 查詢種類(全部、新書、再版) 查詢結(jié)果返回 等等 定購接口: 供書店來定購書籍; 參數(shù)信息: 書店 ID 圖書名 購買數(shù)量 聯(lián)絡(luò)方式的 Callback(上次不足圖書的再版通知) 等等 3.書店(特別是 E 書店)給圖書購買者提供以下接口:查詢接口: 供圖書購買者購買前進(jìn)行查詢; 參數(shù)信息: 圖書種類查詢種類(全部、新書、再版) 查詢結(jié)果返回 等等 購買接口: 供圖書購買者進(jìn)行購買; 參數(shù)信息: 購買者ID 圖書名稱 購買數(shù)量 聯(lián)絡(luò)方式的Callback(上次不足圖書的到貨通知) 等等 4.在主線程中,控制各個(gè)實(shí)體的初始化、上述模擬活動(dòng)的開始和停止; 5.出版社、書店、圖書購買的工作活動(dòng)按照時(shí)間順序輸出到文件work.txt中; 6.為了驗(yàn)證程序執(zhí)行的正確性,各個(gè)實(shí)體(A、B、C、D、E、F、G)都應(yīng)記載數(shù)據(jù), 出版社應(yīng)記錄: 出版(再版)書目、 庫存量、銷售量、銷售明細(xì)(每次銷售給那個(gè)書店多少冊(cè))、定購書目數(shù)量以及明細(xì)(每次向誰定購了什么書、多少本)、銷售書目數(shù)量以及明細(xì) 圖書購買者:記錄購買書目數(shù)量以及明細(xì)。以上信息每隔30秒輸出一次,以便于核對(duì)程序執(zhí)行的正確性。 7.程序要考慮使用良好的程序結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)、程序講求效率。 附一A、B、C、D、E的工作描述 一、關(guān)于出版社工作 1.1出版 出版類型: 出版圖書類型:新書、再版(主要是由于銷售好而再版); 出版數(shù)量:新書出版的數(shù)量 A、B出版社:每隔10秒出版一種新圖書,每次1000冊(cè),即 A出版圖書的順序?yàn)椋嚎萍迹?000)->外文(1000)->社科(1000)->衛(wèi)生(1000)->生活(1000)->體育(1000)->科技(1000); B出版圖書的順序?yàn)椋嚎萍迹?000)->社科(1000)->衛(wèi)生(1000)->生活(1000)->體育(1000)->教育(1000)->科技(1000) 再版圖書的數(shù)量以及再版 當(dāng)出現(xiàn)缺貨時(shí)進(jìn)行再版,每個(gè)書再版的數(shù)量為 (1)再版500冊(cè)(當(dāng)缺貨數(shù)量<=500冊(cè)時(shí)); (2)大于缺貨數(shù)量并為1000的整數(shù)倍(當(dāng)缺貨數(shù)量>500冊(cè)時(shí)); 再版請(qǐng)求要進(jìn)行管理,每次再版不花時(shí)間。 出版書目相關(guān)信息 書目信息包括:編號(hào)、書名、種類、出版社等。 1.2發(fā)行(銷售) 具體工作包括: 發(fā)行通知: 出版新書,向所有訂閱此分類的書店通知, 再版,只通知訂購此種圖書但因缺貨沒買到書的書店。接受書店定購:如有貨,則發(fā)貨 否則,存貨部分進(jìn)行銷售(同步完成),剩余部分轉(zhuǎn)再版處理(異步完成); 并且定購接口中,要有書店的信息,以便于再版后的通知(對(duì)上次購買不足的書店)。 1.3提供書目查詢服務(wù)提供向書店提供書目查詢服務(wù),查詢分類查書目、庫存等。 提供查詢希望能夠講求效率。 二、關(guān)于書店工作 2.1定購工作 定購分類兩類:一類是主動(dòng)定購、另一類是被動(dòng)定購; 被動(dòng)定購:接到書店定購?fù)ㄖ笕ザㄙ彛?主動(dòng)定購:當(dāng)前書店銷售庫存為0,而發(fā)生的定購; 每次定購不限于一種圖書。 定購前,應(yīng)該進(jìn)行相關(guān)書目信息的查詢。 E書店接到新書通知后每次訂購200冊(cè) 如果書店定購的圖書,出版社貨不足,則庫存有多少購買多少,不足部分等到圖書再版后通知再購買。(例如要購買500本,而庫存只有300本,則先購300本,剩下200本等到再版后再購買) 三、關(guān)于圖書購買者 G是一個(gè)單位用戶,對(duì)科技、外文、社科、衛(wèi)生、生活、體育、教育類圖書都感興趣,不定期從E書店購買新書,每次購買的數(shù)量是一個(gè)隨機(jī)數(shù)(小于500); 這里的不定期可以認(rèn)為G每隔幾秒(小于8的隨機(jī)數(shù))到E書店查詢一次,看看是否有新書,如果有新書則一定購買新書,否則隨機(jī)購買一種原有的書,如果貨物不足,則庫存有多少購買多少,不足部分等到書店通知到貨后再購買。(例如要購買50本,而庫存只有30本,則先購30本,剩下20本等到書店到貨后再購買) 附二 系統(tǒng)的初始化描述 A出版社、B出版社、 C書店、 D書店、 E書店、F圖書購買者、G圖書購買者初始的數(shù)據(jù)都為空。 活動(dòng)開始的順序?yàn)椋?1. A、B出版社開始出書 2. 出版后,出版社通知注冊(cè)的書店(C、D、E),來定購; 3. 書店定購后,開始圖書銷售; 4. 圖書購買者(G)定期到書店買書; 練習(xí)要求:先模擬出版社A,書商E,圖書購買者G的交易過程,其余待完善
posted @
2009-08-03 17:10 人生在于攀登! 閱讀(270) |
評(píng)論 (2) |
編輯 收藏
摘要: 主要源代碼:
void CSpellGraphicDlg::OnUp() { // TODO: Add your control notification handler code here if (p.currentPoint/3==0) { &...
閱讀全文
posted @
2009-08-03 15:37 人生在于攀登! 閱讀(205) |
評(píng)論 (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("請(qǐng)依次輸入青蛙A的起始點(diǎn)、青蛙B的起始點(diǎn)、青蛙A依次跳躍距離、青蛙B依次跳躍距離和總長度:");
scanf("%d %d %d %d %d",&startPointA,&startPointB,&longA,&longB,&totalLong);
while (startPointA==startPointB)

{
printf("你輸入數(shù)據(jù)有誤,請(qǐng)重新輸入:");
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 人生在于攀登! 閱讀(482) |
評(píng)論 (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);//必須使用指針地址作為實(shí)參才能修改指針?biāo)竷?nèi)容
printf("%c\n",*pa);
return 0;
}
posted @
2009-08-03 10:16 人生在于攀登! 閱讀(204) |
評(píng)論 (0) |
編輯 收藏
//回調(diào)函數(shù)
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函數(shù)調(diào)用
CWnd::SetTimer(1,1000,TimerProc);
編譯出錯(cuò),錯(cuò)誤信息如下:
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 人生在于攀登! 閱讀(741) |
評(píng)論 (3) |
編輯 收藏