發表文章

目前顯示的是 2013的文章

[C/C++] 別忘了在char陣列結尾加/0...

今天就為了這個問題debug很久...問題是這樣的:我想要製造儲存一個BIG5字元的char陣列。(每個BIG5字元需要兩個char儲存,舉例來說,"A5 D0"為"田")理所當然寫了這樣一段: char BIG5_character[2]; BIG5_character[0] = 0xA5; BIG5_character[1] = 0xD0; cout << BIG5_character; 理論上應該會看到"田",實際上田是出來了,但後面跟了一串亂碼:"田p~+" 原因在於一個完整的字串,必須要在結尾放一個結束字元 \0,忘了放則cout會繼續往下輸出。 因此把原code修改一下: char BIG5_character[3]; BIG5_character[0] = 0xA5; BIG5_character[1] = 0xD0; BIG5_character[2] = 0;          // 結束字元的ASCII編號是0 cout << BIG5_character; 這樣就可以得到正確輸出"田"了,不過這麼基本的東西我竟然到現在才知道... STL用太多了XD

Linux的環境變數設定

env 列出環境變數 ex: env export A=B 將環境變數A設為B 若設定值含有空格,請用單引號包住整個內容。 ex: export test_var=1 export test_var='test linux' unset A 刪除環境變數A ex: unset test_var source [file_path] 在此terminal中匯入環境變數檔(每次重開新terminal,就要重新匯入一次),source檔可以放在任意資料夾中,不需要副檔名。 (ubuntu) 使用ubuntu時,可以使用/etc/environment作為環境變數檔,匯入時較方便。 文檔的格式如下: PATH="aaa:bbb:ccc" TEST="This is a test" ex: source /etc/environment source var_file

C++ 分段parse stream的簡單方法: getline, istream_constructor + copy

c++的getline函數是非常好用的parse工具,用在固定格式上的parse非常方便。 getline的格式如下: istream& getline(istream& is, string& str, char delim); istream& is         輸入的istream/fstream string&    str       擷取下來的字串要儲存的地方(開個變數存即可) char        delim   分段字元。 我們直接舉例子說明使用方法,假設今天有個文件長得像這樣:   (0,82)(0,-14)(0,-1)(0,-6)(0,-4)   我們想要個別parse每個括弧存成字串,這時可以用下面的程式碼: string buffer; while (getline(fin, buffer, ')')) {     buffer = buffer + ")"; } cout << buffer << " "; 一開始parse出來會是 (0,82 (0,14...都少了個右括弧, 所以我們在迴圈中補上。輸出結果如下: (0,82) (0,-14) (0,-1) (0,-6) (0,-4) C++11 Parsing的好幫手: istream_constructor + copy const char * cStr; std::stringstream ss(cStr); std::copy(std::istream_iterator (ss),     std::istream_iterator (),     std::back_inserter(vector)); Can split a simple format string into a vector.(ex: abc bcd cde... or abc\nbcd\ncde\n...)

jQuery Selector & Functions

selectors $("typename"): 選擇所有type名稱為typename的要素 ex: $("div") $(".classname"): 選擇所有class名稱為classname的要素 ex: $(".email") $(type[name=elementname]): 選擇type相符且名稱為elementname的要素 (完全比對) ex: $("tbody[name=server1]") $("type[name^=elementname]"): 選擇type相符且名稱部分符合的要素 (部分比對) ex: $("tbody[name^=server]") 同樣可以選擇到server1,也可選到server2。    $("#id"): 選擇id相同的要素 ex: $("#test") $(this): 用在函數裡,表示此函數的對象要素。 (要加括弧,不加是別的意思) ex: $("this") Functions .children("") 選擇此要素下一層,符合括弧搜尋條件的子要素。 只能掃下一層 。   ex: $("this").children("#take") .find("") 選擇此要素下,符合括弧搜尋條件的子要素。 可多層搜尋 。   ex: $("this").find(".email") .closest("") 選擇此要素上方,符合括弧搜尋條件且最靠近的母要素。 可多層搜尋 。     ex: $("this").closest("#take") .val() jQuery物件和要素不完全一致 ,後者取值用.value, 前者要用.val()。 至於給值,直接寫在括弧裡面即可。   ex: $("this").

GNU compiler設定與使用

圖片
this tutorial is based on:  http://www.cc.ntut.edu.tw/~jsechang/jsechang3/fortran/GNU_Compile.htm GNU Compiler是GNU系統所使用的編譯器,其中包含了C, C++, Fortran,使用上簡潔方便,功能十分強大,更重要的: 免費。 但在windows下安裝GNU Compiler較為繁瑣,我們需要使用MinGW(Minimalist GNU for Windows),整個安裝流程請參考下面逐步教學: 1. 打開 http://www.mingw.org/ ,點選左下方的download。 2. 進入sourcedorge的專案頁面,我們選擇其中的installer。 3. 接著選擇ming-get-inst資料夾。 4. 直接點上方的下載連結,下載最新版的ming-get-inst。 5. 點下去後,下載即會自行開始。 6. 下載完成後,打開安裝程式,其中Repository Catalogue選擇download latest repository catalogues,以安裝最新版的MinGW: 7. 安裝資料夾可以任意訂定,這邊以C:\MinGW作示範。 8. 接著在編譯器選擇頁面,將需要用到的打勾,此處為C, C++, Fortran。 9. 一直按next後,就會來到terminal的安裝模式,此時可以放著不管他: 10. 我們趁這段時間設定環境變數(environment variables),在我的電腦上按右鍵,選擇內容。       (本方法適用於windows vista, 7, 8) 11. 點選下方的"環境變數": 12. 在使用者變數中點選"新增"。 13. 名稱輸入"path",路徑則是MinGW安裝資料夾中的bin,這邊是C:\MinGW\bin 14. 準備一個fortran程式,命名為example.for PROGRAM MAIN INTEGER N, X EXT