Time of Update: 2018-12-05
基於C的檔案操作 在ANSI C中,對檔案的操作分為兩種方式,即流式檔案操作和I/O檔案操作,下面就分別介紹之。一、流式檔案操作這種方式的檔案操作有一個重要的結構FILE,FILE在標頭檔stdio.h中定義如下:typedef struct {int level; /* fill/empty level of buffer */unsigned flags; /* File status flags */char fd; /* File descriptor */unsigned char
Time of Update: 2018-12-05
1.匯出類的DLL:一般建立的工程選擇MFC拓展DLL,並在要匯出的類的聲明之間加上AFX_EXT_CLASS,比如說CObjectMgr類,則應該聲明為 class AFX_EXT_CLASS CObjectMgr{};即可。引用匯出類的DLL時,只能用隱式引用的方式,把.h包含進工程,並加上這兩句代碼#pragma comment(lib,".\\CMonitorDll.lib")#include "ObjectMgr.h"然後聲明一個匯出類的對象 CObjectMgr
Time of Update: 2018-12-05
1、聯合體union 是聯合體,聯合體中可以包含1個到多個結構體, 這些結構體中大小最長的結構體決定聯合體的長度,對於聯合體中的任何一個成員賦值,會導致其他的成員被重設(因為記憶體共用的關係。)比如:union{int a;float b;struct{char c;int d;} st;}對該聯合體中的 a 進行賦值,會導致 b 和st 的值進行重設,這是因為,a、b、st 是共用的記憶體空間。 對st 中的 c 進行賦值同樣會導致
Time of Update: 2018-12-05
最近做一個log程式用到了擷取應用程式路徑的方法,順便整理了一下:1.獲得帶.exe的路徑string str1 = Process.GetCurrentProcess().MainModule.FileName; //可獲得當前執行的exe的檔案名稱。D:\work\Projects\AddressMapping\AddressMapping\Test\bin\Debug\Test.vshost.exestring str1 =
Time of Update: 2018-12-05
常用概念有:繼承、虛函數、純虛函數、多態、覆蓋、重載、隱藏等1、繼承: 繼承比較好理解,主要注意繼承中建構函式的調用順序。構造子類(衍生類別)的時候,先要調用父類(基類)的建構函式。2、虛函數: virtual關鍵字3、純虛函數 virtual void breath() = 0;
Time of Update: 2018-12-05
1、malloc、free 與 new 、delete的區別首先malloc、free 屬於C的一組庫函數,new delete 屬於C++的一組運算子。 功能都是開闢和釋放記憶體空間。 但是區別在於。new 和delete運算子 在開闢空間的時候會調用類的建構函式和解構函式。 而malloc free 則沒有這項功能。(C裡面也沒有類的概念)2、C++空類預設產生哪些類成員函數?編譯器自動產生4個函數,預設的 建構函式、解構函式、拷貝建構函式、賦值函數。3、C++中解構函式可以是內嵌函式 4、
Time of Update: 2018-12-05
1. 讀取檔案(StreamReader)添加引用:using System.IO;StreamReader objReader = new StreamReader(檔案路徑); string sLine=""; ArrayList LineList = new ArrayList(); while (sLine != null) { sLine = objReader.ReadLine(); if (sLine !=
Time of Update: 2018-12-05
區別:const的值是在編譯期間確定的,因此只能在聲明時通過常量運算式指定其值,比如:public const π=3.1415926;public const DayHours=24;像這些恒定不變的量,我們最好是用Const來聲明。static readonly是在運行時計算出其值的,所以還可以通過靜態建構函式來賦值。比如:public static string m_CurrentMdbPath;public static string
Time of Update: 2018-12-05
最近在做一個應用程式,涉及到兩個應用程式之間的通訊,就想到了用C#的具名管道的方式來實現,經過一番小折騰,總算實現了,現把一些主體的代碼粘貼出來與大家分享: 管道通訊會涉及到client端和Server端,Client端的主要代碼: 需要引用命名空間:using System.IO.Pipes;Thread pipeThread = new Thread(new
Time of Update: 2018-12-05
因為一道面試的題目,所以抓來了譚浩強的《C語言程式設計》翻了下,其中譚老師在240頁10.22例中,字元指標指向的字元,可通過像字元數組,使用[]來訪問,即: char * a = “I love china”;printf("The sixth charcter is %c\n",a[5]); 我便突發奇想,可否通過字元指標來改變其指向的內容,即VS2005的環境下,便會出 “0xC0000005: 寫入位置 0x00418bf0
Time of Update: 2018-12-05
具名管道的串連總結: 具名管道的串連有兩次阻塞的地方,一是在WaitForConnection()時[用戶端進行串連同理]會阻塞,二是在ReadString()[讀取管道資訊]時。 在伺服器端第一次建立具名管道後等待串連,當用戶端串連成功後伺服器端的具名管道就用作通訊用途。如果需要再次等待串連,伺服器端就需要再次開啟具名管道(建立一個具名管道的執行個體)並等待串連。
Time of Update: 2018-12-05
C++實現的委託機制(1)1.引言下面的委託實現使用的MyGUI裡面的委託實現,MyGUI是一款強大的GUI庫,想理解更多的MyGUI資訊,猛擊這裡http://mygui.info/ 最終的代碼可以在這裡下載:http://download.csdn.net/detail/gouki04/3641328 我們的目標是要實現一個跟.NET幾乎完全一樣的委託,使用簡單,支援多播,可以添加刪除委託。同時支援C++的普通函數、模板函數、類成員函數,類的靜態成員函數,並且支援多態。使用方式如下://
Time of Update: 2018-12-05
前段時間,在做objetive-c下的Sokcet通訊,當使用C++程式做服務端時,一切正常;當用JAVA做服務端時,雙方收不到資料,在查閱了一些資料後,整理一下注意點1 訊息末尾加斷行符號和分行符號 objetive-c發送資料時,要在末尾加上“\r\n”_dataToSend = [NSData dataWithBytes:"This is a test\n" length:15]; 這是因為JAVA服務端使用類似於readline()的函數,讀取緩衝區中的內容2
Time of Update: 2018-12-05
其實他們兩個都是委託【代理】的簡寫形式。一、【action<>】指定那些只有輸入參數,沒有傳回值的委託Delegate的代碼:public delegate void myDelegate(string str);public static void HellowChinese(string strChinese){Console.WriteLine("Good morning," + strChinese);Console.ReadLine();}myDelegate d =
Time of Update: 2018-12-05
就像我們已經看到的, lambda運算式可以隱式或顯式的被轉換為適當的委託執行個體. 然而, 這並非唯一可用的轉換規則, 你也可以讓編譯器幫你從一個lambda運算式來構建運算式樹狀架構, 然後在執行時建立一個Expression<TDelegate>執行個體. 例如, 下面的例子使用了更簡短的方式建立”return 5″的運算式, 然後編譯並執行結果委託: 1: Expression<Func<int>> return5 = () => 5;
Time of Update: 2018-12-05
作為練習,自己編了一個: #include "stdafx.h"#include <iostream>#include <string>//#include <windows.h>using namespace std; int IPToValue(const string& strIP){//IP轉化為數值//沒有格式檢查//傳回值就是結果int a[4];string IP = strIP;string strTemp;size_t
Time of Update: 2018-12-05
【一】樣本一以下代碼是放在對話方塊類的OnInitDialog中,注意m_font是類成員函數,否則會因為局部變數失效的原因,而導致SetFont出現問題。 CFont* pfont = m_e2.GetFont();//CEdit m_e2;ASSERT(NULL != pfont);LOGFONT lf;int nret = pfont->GetLogFont(&lf);ASSERT(0 != nret);lf.lfHeight=-60; //設定高度
Time of Update: 2018-12-05
使用vc9.0#include "stdafx.h" #include <iostream> using namespace std;template <typename T>class C{public: C() { } static T m;};template <typename T>T C<T>::m;//類C特化 template <>class C<int>{public: C(
Time of Update: 2018-12-05
一個小的win32程式。使用vc6.0。#include "stdafx.h" #include <windows.h> #include <math.h> #include <stdlib.h> #define ID_TIMER 1 #define SNOWNUM 500 // 雪花數量 #define CONTRAST 50 // 對比
Time of Update: 2018-12-05
參考文獻:http://www.research.att.com/~bs/bs_faq2.html#no-derivation http://dev.csdn.net/article/14/14193.shtm Can I stop people deriving from my class?Yes, but why do you want to? There are two common answers: for efficiency: to avoid my function calls