// Headers and Macros
#ifndef _MSC_VER
#undef NULL
#define NULL 0
#endif
#include <iostream>
#include <cstdlib>
using namespace std;
//
#include <string>
#include <Windows.h>
#include <conio.h>
#define MAX_LENGTH 10
class CHW
{
public:
CHW(void)
{
// 要求輸入數字字串
cout<<"Input a number: ";
this->MSDOS_InputBufferLength( a, MAX_LENGTH);
// 檢查是否為數字字元
for ( string::iterator it = this->a.begin(); it != this->a.end(); it ++)
{
if ( isdigit((*it)) == NULL )
{
cout<<"It's not decimal-digit character."<<endl;
return;
}
}
// 檢查重複的數字
this->bFlag = true;
for ( string::iterator it1 = this->a.begin(); it1 != this->a.end(); it1 ++)
{
string::iterator it2 = it1;
it2 ++;
for ( ;it2 != this->a.end(); it2 ++)
{
if ( (*it1) == (*it2) )
{
this->bFlag = false;
cout<<"Repeat digit!!!"<<endl;
return;
}
}
}
if ( this->bFlag )
{
cout<<"No repeat digit!!!"<<endl;
}
}
void MSDOS_InputBufferLength( string& StringBuffer, size_t NumberOfChar)
{
string& a = StringBuffer;
while ( true )
{
bool bSaveChar = true;
int ch;
ch = -1;
ch = getch();
switch ( ch )
{
case VK_BACK:
bSaveChar = false;
if ( ! a.empty() )
{
cout<<"\b \b";
a.erase(a.end() - 1);
}
break;
case VK_RETURN:
cout<<endl;
return;
default:
if ( bSaveChar )
{
if ( a.size() < NumberOfChar )
{
cout<<(char)ch;
a.push_back(ch);
}
}
break;
}
}
}
// Rule of Three in C++
// 1. Copy Constructor
CHW(CHW& clone){}
// 2. Copy Assignment Operator
CHW& operator=(CHW& clone)
{
if ( this != &clone ){}
return *this;
}
// 3. Destructor
~CHW(){}
private:
string a;
bool bFlag;
};
//Main Function
#ifndef _MSC_VER
int
#else
void
#endif
main(int argc, char** argv)
{
//==START==//
CHW ClassHomeWork;
//==END==//
system("PAUSE");
return
#ifndef _MSC_VER
EXIT_SUCCESS
#endif
;
}
2009-11-20 21:12:12 補充:
=__=!
買(或借)本 C/C++ 的書籍來念就會了…
網路上也有一堆參考資料,像是物件導向的 Design patterns 可以參考這個網址:
http://www.vincehuston.org/
2009-11-21 18:14:06 補充:
=__=!
只是引用 windows.h 定義的常數而已…
因為懶得再去做定義,所以用現成的定義值。
string 是 STL 的字串資料型態…
在這裡 iterator 是計數器,實際上它用中文翻譯是「迭代器」,很像指標,用法也像指標,但是不可以像指標那樣隨便亂用,例如四則運算等等。
基本上寫小程式寫到可以執行就可以了,除非你想考量到記憶體、系統、演算法、樹、資料結構等雜七雜八的,那就另當別論。
2009-11-21 18:14:37 補充:
有!書本有介紹。
作者:Bjarne Stroustrup(C++ 發明人)
書名:The C++ Programming Language
迭代器的介紹部分:
Part III: The Standard Library
Iterators and Allocators(第 549 頁)
或者你去書局或圖書館找 C++ 的書籍也有相關的介紹。