• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 11,  comments - 12,  trackbacks - 0

            以下基于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 人生在于攀登! 閱讀(420) | 評論 (0)編輯 收藏
            1.類和函數的申明必須加上AFX_EXT_CLASS宏
            AFX_EXT_CLASS宏的msdn解釋:

            Extension DLLs use the macro AFX_EXT_CLASS to export classes; the executables that link to the extension DLL use the macro to import classes. With the AFX_EXT_CLASS macro, the same header file(s) used to build the extension DLL can be used with the executables that link to the DLL.

            類示例:
            1class AFX_EXT_CLASS CMyClass : public CDocument
            2{
            3// <body of class>
            4}
            ;
            5
            6
            函數示例:
            extern "C" AFX_EXT_CLASS Min(intint); //導出函數

            2.在類的頭文件中定義你dll中的資源值
            示例:
            1#define IDR_MYMENU 9002  //菜單資源
            2#define ID_MYTEST 9003   //菜單下拉按鈕資源
             
            3.類cpp文件編寫正確后編譯源程序
            編譯結束后,在資源頭文件中會有你在類頭文件中定義的資源項,但是資源的值往往和你在類頭文件中定義的值不相同,你必須手工改過來

            4.使用MFCDLL
            (1).講生成號的.dll和.lib文件拷貝到你工程文件夾下,并且將你的類頭文件也拷貝到工程文件夾下,在你需要創建類對象的文件前包含頭文件
            (2).把.lib文件添加到你的工程資源中
            (3).加載dll資源
            示例:
            1//MFC擴展dll中資源的加載  記得在編譯值錢需要在工程中導入相應的lib文件,還有在工程文件夾中賦值dll中類的頭文件
            2    HINSTANCE hdll = LoadLibrary("MFCEXTDLL.dll");  //加載dll文件
            3    if (hdll != NULL)  //判斷是否加載成功
            4    {
            5        HMENU hmen = LoadMenu(hdll, MAKEINTRESOURCE(IDR_MYMENU));  //從一個可執行文件中加載菜單資源
            6        ::SetMenu(this->GetSafeHwnd(), hmen);   //給窗口分配一個新的菜單
            7        ::DrawMenuBar(this->GetSafeHwnd());   //重新繪畫菜單
            8        FreeLibrary(hdll);  //釋放dll模塊實例
            9    }
            (4).添加你dll資源中的消息響應函數
            afx_msg void OnTestTestDLL();//函數申明
            ON_COMMAND(ID_MYTEST, OnTestTestDLL)   //消息映射
            //函數實現
            void CUSEMFCDLLDlg::OnTestTestDLL()
            {
            /*
               Funcation body
            */

            }
            posted @ 2009-09-01 16:53 人生在于攀登! 閱讀(183) | 評論 (0)編輯 收藏
            CreateThread
            參數信息:lpThreadAttributes 安全屬性結構體指針
            dwStackSize 分配給新線程的堆大小
            lpStartAddress 只想新線程的入口函數 格式如下:
            線程函數入口
            補充注意:入口函數不一定必須是上述格式(上述格式是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
            參數信息:lpMutexAttributes 安全屬性結構體指針 NULL是為默認的安全描敘符
            bInitialOwner 為真時調用線程創建互斥對象,調用線程擁有互斥對象 為假時調用線程不擁有互斥對象
            lpName 互斥對象的名稱

            WaitForSingleObject
            參數信息:hHandle Mutex對象(臨界區)
            dwMiliseconds 時間間隔(毫秒),超過時間間隔函數就返回 為0時馬上返回 為INFINITE時用不返回
            返回:失敗返回WAIT_FAILED 否則返回一個引發這個函數的事件



            ReleaseMutex
            返回:成功返回非零數 否則返回0



            posted @ 2009-08-30 14:18 人生在于攀登! 閱讀(244) | 評論 (0)編輯 收藏
            自創源代碼如下: 
            string pstr=pName+"-"+pID; 
            fwrite(pstr.c_str(),
            sizeof(pstr),1,file); 
            若pstr="12-34"
            結果不是理想中那樣,打開文本后看到的是:12-34 屯屯屯屯 請問哪位大哥有更好是寫入方法,可以指教我就非常感謝了!
            posted @ 2009-08-07 14:29 人生在于攀登! 閱讀(1149) | 評論 (3)編輯 收藏
                 摘要:   閱讀全文
            posted @ 2009-08-07 14:24 人生在于攀登! 閱讀(2929) | 評論 (3)編輯 收藏
            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 人生在于攀登! 閱讀(270) | 評論 (2)編輯 收藏
                 摘要: 主要源代碼: void CSpellGraphicDlg::OnUp() { // TODO: Add your control notification handler code here if (p.currentPoint/3==0) { &...  閱讀全文
            posted @ 2009-08-03 15:37 人生在于攀登! 閱讀(205) | 評論 (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==&& startPiontB==&& 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 人生在于攀登! 閱讀(482) | 評論 (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 人生在于攀登! 閱讀(204) | 評論 (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 人生在于攀登! 閱讀(740) | 評論 (3)編輯 收藏
            僅列出標題  下一頁
            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿

            隨筆檔案

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            久久久精品人妻一区二区三区蜜桃| 久久精品国产一区二区三区不卡| 久久久亚洲裙底偷窥综合| 一日本道伊人久久综合影| 久久久久久精品免费看SSS | 色老头网站久久网| 久久久亚洲欧洲日产国码二区| 2021精品国产综合久久| 人妻丰满?V无码久久不卡| 久久久精品国产sm调教网站| 久久免费香蕉视频| 国产91久久精品一区二区| 久久青青国产| 久久九九亚洲精品| 久久久亚洲AV波多野结衣 | 久久亚洲私人国产精品vA| 久久成人18免费网站| 久久夜色精品国产欧美乱| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 国产一久久香蕉国产线看观看 | 久久综合给久久狠狠97色| 久久精品国产只有精品66| 久久精品国产亚洲av麻豆小说| 亚洲精品无码专区久久同性男| 粉嫩小泬无遮挡久久久久久| 伊人久久精品影院| 伊人久久大香线蕉综合5g| 久久精品国产只有精品66| 99久久精品免费看国产一区二区三区| 亚洲国产精品久久久天堂| 久久久久亚洲AV片无码下载蜜桃| 久久久精品视频免费观看| 国产精品无码久久四虎| 天天久久狠狠色综合| 一本大道加勒比久久综合| 国产精品天天影视久久综合网| 国产精品久久午夜夜伦鲁鲁| 久久精品九九亚洲精品| .精品久久久麻豆国产精品| 国产精品久久免费| 国产精品熟女福利久久AV|