以下記錄我練習寫的一個小程式,可以讀取出file1第1行記錄的日期資訊。
#This code was written by Uncle on 2011/02/15
#This code can Add a new line on file1, and Update Date information
#in the first line.
#!bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
tmp=`head -1 file1|cut -c 17-24`
echo $tmp
----------------------------------------
其中file1內容:
>Last Update on 20110215
Data1 by Peter
Data2 by Mary
執行結果:
$sh test3.sh
20110215
2011年2月16日 星期三
2011年2月15日 星期二
有關Blogger張貼程式碼
剛剛發現在Blogger上發表文章張貼程式碼時,<、>這兩個符號沒有辦法顯示出來。
有一個網站能解決這個問題:
http://www.opinionatedgeek.com/DotNet/Tools/HTMLEncode/Encode.aspx
將所有包含程式碼的文章貼到這個網站提供的方塊中,可以做html的encode,並且在Blogger發表新文章時點選"修改HTML",並將轉碼後的html text貼到"修改HTML"那個頁面。
如此就可以正常顯示<、>等符號了。
有一個網站能解決這個問題:
http://www.opinionatedgeek.com/DotNet/Tools/HTMLEncode/Encode.aspx
將所有包含程式碼的文章貼到這個網站提供的方塊中,可以做html的encode,並且在Blogger發表新文章時點選"修改HTML",並將轉碼後的html text貼到"修改HTML"那個頁面。
如此就可以正常顯示<、>等符號了。
2011年2月14日 星期一
[C++] template
因為演算法作業我想使用class template,因此複習一下,並寫下心得:
1. Function template,同樣的function,不同型態的參數。
先在程式開頭(using namespace std;那一行下面)打上template <class T>
然後在描述函式內容的時候:
template <class T>
void fun(T a)
{
...
}
如此在main中要使用這個function,可以用很多型態的a當函式的參數,而且完全不用特別說明現在使用什麼資料型態當成fun的參數,直接拿起來就用。程式會自己判斷。
2. 如果定義一個class,class裏面member的資料型態可以自由換,例如一下子用int一下子用別的型態,可用class template,我記錄以下幾點筆記:
(1)在class的定義之前寫下:template <class T>
(2)class裏面就可以開始用T當成資料型態。
(3)要開始描述class的member function行為前,要寫兩行,一行是template <class T>,另一行是 T class名稱<T>::member函式名稱。(函式回傳值不一定要是T)
例如:
// This is an example code written by Uncle on 2011/02/14.
// This code shows how to use class template.
template <class T>
class Uclass
{
public:
void UncleSayHi();
T num;
};
template <class T>
void Uclass<T>::UncleSayHi()
{
cout << "hi!" << endl;
}
...
4. <>括號裡可以寫很多種class,例如可以寫template <class T,class X>。也可以加上已知型態的參數,例如寫template <class T, double d>,如此在class的定義裏面只要看到d就是代表一個double型態的值。
5. 使用class時,宣告方式:class名稱 <需要的資料型態> 變數名;
例如:Uclass <int> variable1;
1. Function template,同樣的function,不同型態的參數。
先在程式開頭(using namespace std;那一行下面)打上template <class T>
然後在描述函式內容的時候:
template <class T>
void fun(T a)
{
...
}
如此在main中要使用這個function,可以用很多型態的a當函式的參數,而且完全不用特別說明現在使用什麼資料型態當成fun的參數,直接拿起來就用。程式會自己判斷。
2. 如果定義一個class,class裏面member的資料型態可以自由換,例如一下子用int一下子用別的型態,可用class template,我記錄以下幾點筆記:
(1)在class的定義之前寫下:template <class T>
(2)class裏面就可以開始用T當成資料型態。
(3)要開始描述class的member function行為前,要寫兩行,一行是template <class T>,另一行是 T class名稱<T>::member函式名稱。(函式回傳值不一定要是T)
例如:
// This is an example code written by Uncle on 2011/02/14.
// This code shows how to use class template.
template <class T>
class Uclass
{
public:
void UncleSayHi();
T num;
};
template <class T>
void Uclass<T>::UncleSayHi()
{
cout << "hi!" << endl;
}
...
4. <>括號裡可以寫很多種class,例如可以寫template <class T,class X>。也可以加上已知型態的參數,例如寫template <class T, double d>,如此在class的定義裏面只要看到d就是代表一個double型態的值。
5. 使用class時,宣告方式:class名稱 <需要的資料型態> 變數名;
例如:Uclass <int> variable1;
2011年2月13日 星期日
我的Shell Script學習心得(一):檔案的操作
以下是我學習Shell Script過程中,整理下來的心得。
我常用的Linux指令符號:
1. "|"符號用法:
(第一個指令)|(第二個指令):代表第一個指令結果導到第二個指令的input。
2. ">"用法:
(1)>(2):代表(1)存到(2)。
3. ">>"用法:
(1)>>(2):代表(1)append到(2)。
---------------------------------------------------------------------------------------------------------------------------------
以下是我寫的一個能將檔案更新一行資料的程式:
#!bin/bash
#test1.sh
#This code was written by Uncle on 2011/02/14
#This code can update a new line into file named "test_file" in current directory.
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
echo $1>>./test_file
echo "Update successful."
#end
---------------------------------------------------------------------------------------------------------------
以下是執行方式。
在終端機輸入指令:
$ sh test1.sh Uncle
執行結果:
Update successful.
在終端機輸入指令:
$ cat test_file
執行結果:
.....file舊的資料顯示在此...
Uncle --->多了一筆資料更新叫作"Uncle"。
---------------------------------------------------------------------------------------------------------------
我常用的Linux指令符號:
1. "|"符號用法:
(第一個指令)|(第二個指令):代表第一個指令結果導到第二個指令的input。
2. ">"用法:
(1)>(2):代表(1)存到(2)。
3. ">>"用法:
(1)>>(2):代表(1)append到(2)。
---------------------------------------------------------------------------------------------------------------------------------
以下是我寫的一個能將檔案更新一行資料的程式:
#!bin/bash
#test1.sh
#This code was written by Uncle on 2011/02/14
#This code can update a new line into file named "test_file" in current directory.
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
echo $1>>./test_file
echo "Update successful."
#end
---------------------------------------------------------------------------------------------------------------
以下是執行方式。
在終端機輸入指令:
$ sh test1.sh Uncle
執行結果:
Update successful.
在終端機輸入指令:
$ cat test_file
執行結果:
.....file舊的資料顯示在此...
Uncle --->多了一筆資料更新叫作"Uncle"。
---------------------------------------------------------------------------------------------------------------
2011年2月9日 星期三
我的pthread學習心得(一)
我是用g++練習寫thread的。
我簡單將我學到的東西列舉出來:
1. 使用到pthread,標頭檔要加入pthread.h檔案。
2. 先用pthread_create_init函式將參數傳入thread程序,然後再用pthread_join函式等待thread執行終止。如果thread之間有要access到同樣的資料,可以用pthread_mutex_lock函式將mutex變數鎖住,並且用pthread_mutex_unlock函式解鎖,如此可以控制thread運行順序。
3. 用g++編譯時,指令要輸入:g++ lpthread main.cpp,其中main.cpp是要編譯的檔案。如此能設定搜尋標頭檔的目錄。
我簡單將我學到的東西列舉出來:
1. 使用到pthread,標頭檔要加入pthread.h檔案。
2. 先用pthread_create_init函式將參數傳入thread程序,然後再用pthread_join函式等待thread執行終止。如果thread之間有要access到同樣的資料,可以用pthread_mutex_lock函式將mutex變數鎖住,並且用pthread_mutex_unlock函式解鎖,如此可以控制thread運行順序。
3. 用g++編譯時,指令要輸入:g++ lpthread main.cpp,其中main.cpp是要編譯的檔案。如此能設定搜尋標頭檔的目錄。
[C++] 的標頭檔寫法
本篇記錄C++標頭檔寫法:(之前我有點搞混標頭檔寫法,但研究之後發現超簡單)
1. include<標頭檔名稱> //用大於跟小於符號"<>"包起標頭檔名,
//編譯器就會去預設存放標頭檔的目錄找標頭檔。
2. include "標頭檔名稱" //用引號包住標頭檔名,編譯器先去當前程式碼存放的目錄找標頭檔,
//若找不到再去原來預設的目錄找。
C++撰寫code時,有的標頭檔沒有副檔名".h",沒有副檔名的標頭檔只能在std命名空間內使用。這就是為什麼我剛開始學C++程式時,都會在開頭撰寫using namespace std; 來指定命名空間。
1. include<標頭檔名稱> //用大於跟小於符號"<>"包起標頭檔名,
//編譯器就會去預設存放標頭檔的目錄找標頭檔。
2. include "標頭檔名稱" //用引號包住標頭檔名,編譯器先去當前程式碼存放的目錄找標頭檔,
//若找不到再去原來預設的目錄找。
C++撰寫code時,有的標頭檔沒有副檔名".h",沒有副檔名的標頭檔只能在std命名空間內使用。這就是為什麼我剛開始學C++程式時,都會在開頭撰寫using namespace std; 來指定命名空間。
2011年2月8日 星期二
[C++] string和cstring
以下記錄我常用的cstring跟string用法。
C型態的string:
C型態的string將文字存在陣列裏面。用指標可access字串陣列。
我常用的C型態字串用法:
1. char *s = "I am Uncle."; //s指標指向字串開頭,即'I'的位址。
2. char s[] = "I am Uncle."; //此時s陣列儲存整個字串,陣列最後有存'\0'。
3. size_t len = strlen(s); //可得len為s陣列存的字串長度,長度計算時不計算'\0'字元。
C++中有定義string類別,以下列出我常用的string用法:
1. string a; //直接宣告a字串時,不用設初始值a即為空字串。
2. string有一個建構式是string(size_t n, char c),十分好用。
例如宣告string a(2,c); //代表將c裡儲存的字元,連續2次當成a的初始值。
3. string類別可以直接跟char相加,例如:
string a = "12";
char b = '3';
a += b;
cout << "a;
執行結果會輸出"123"。
4. a.clear(); //清空string內容的寫法,其中a是string類別。
5. int len = a.length() //得到len為a字串裡儲存的字數(不包括null character),
//其中a為string類別。
6. a = a.assign(word,0,5) //將word從第0個位置開始拿出5個字元當成a內儲存的所有內容。
//a跟word都是string類別。
C型態的string:
C型態的string將文字存在陣列裏面。用指標可access字串陣列。
我常用的C型態字串用法:
1. char *s = "I am Uncle."; //s指標指向字串開頭,即'I'的位址。
2. char s[] = "I am Uncle."; //此時s陣列儲存整個字串,陣列最後有存'\0'。
3. size_t len = strlen(s); //可得len為s陣列存的字串長度,長度計算時不計算'\0'字元。
C++中有定義string類別,以下列出我常用的string用法:
1. string a; //直接宣告a字串時,不用設初始值a即為空字串。
2. string有一個建構式是string(size_t n, char c),十分好用。
例如宣告string a(2,c); //代表將c裡儲存的字元,連續2次當成a的初始值。
3. string類別可以直接跟char相加,例如:
string a = "12";
char b = '3';
a += b;
cout << "a;
執行結果會輸出"123"。
4. a.clear(); //清空string內容的寫法,其中a是string類別。
5. int len = a.length() //得到len為a字串裡儲存的字數(不包括null character),
//其中a為string類別。
6. a = a.assign(word,0,5) //將word從第0個位置開始拿出5個字元當成a內儲存的所有內容。
//a跟word都是string類別。
訂閱:
文章 (Atom)