❶ 請問如何用C++使用備忘錄模式和命令模式實現undo redo
昨天正好實現了一個備忘錄模式的示例
#ifndef _MEMENTO_H
#define _MEMENTO_H
#include <iostream>
#include <string>
using namespace std;
typedef string State;
class Memento
{
public:
~Memento();
private:
friend class Originator;
Memento(State s){
this->state = s;
}
void SetState(State s){
this->state = s;
}
State GetState(){
return state;
}
State state;
};
class Originator
{
public:
Originator(State s){
this->state = s;
}
void ChangeState(State s){
this->state = s;
}
Memento* CreateMemento(){
cout<<typeid(*this).name()<<": Create Memento..........."<<endl;
return new Memento(this->state);
}
void RestoreMemento(Memento* mem){
cout<<typeid(*this).name()<<": Restore Memento..........."<<endl;
this->state = mem->GetState();
}
void ShowState(string str){
cout<<str+"\n\tstate: "+state<<endl;
}
private:
State state;
};
class CareTaker
{
private:
Memento* mem;
public:
CareTaker():mem(NULL){}
void SaveMemento(Memento* m){
cout<<typeid(*this).name()<<": Save Memento..........."<<帆中endl;
mem = m;
}
Memento* GetMemento(){
return mem;
}
};
#endif //_MEMENTO_H
int main()
{
Originator *o = new Originator("start state.");
CareTaker *c = new CareTaker();
//show init state
o->ShowState("before change:");
//save state
c->SaveMemento(o->橡枝CreateMemento());
//change state
o->ChangeState("changed state.");
o->ShowState("after changed:");
//restore state
o->RestoreMemento(c->GetMemento());
o->ShowState("restored state:");
system("pause");
}
環境是vs2010,復製成兩個文件,編譯態如山就能運行。解釋的話,就不用了吧。。。
❷ 用C語言寫一下這個程序試下
假定你的c程序名字叫test.c 第一步:編輯,用linux最廣泛使用的vi編輯器為例,shell下段槐友運行vi test.c進入vi編輯器環境,默認為命令模式,按i或I 或A進入插入模式,這樣你可明梁以輸入c源程序。輸入完畢,檢查後按Esc鍵返回命令模式,再握槐按 shift +
❸ 怎麼在linux命令模式下創建以.C為結尾的文件或者將文件轉換成.C結尾
1、創建.c的文件一般鎮昌用命令:vi
*.c,
這樣就可以御拆扒直接在vi下寫自己的程序了
2、轉換用兩種方法:
方法1:如果你不想保留原來的文件了就用:mv
sourceFile
destinationFile
,這里的sourceFile指的是你想轉換的文件,destinationFile指的是你要換成的名字,你想.c結尾就記得在文件名的後面加上.c就可以了;
方法御薯2:如果你想保留原來的文件了就用:cp
sourceFile
destinationFile
,(具體跟上面的命令差不多)。
❹ 微軟C/C++編譯器(調試器)怎麼在命令行模式下調試程序
你說的GL命令加入調試信息。我也不太了解。
WINDOWS環境開發C/C++,應該有個IDE比較方便,效率高點。。。
如果JAVA不用IDE,還能提高些水平,多了解些東西。
但是我覺得C/C++實在沒必要再沒有集成開發環境的情況下做開發吧,
用VS2008最合適。
懷舊的用VC6,
激進的用VC2010,2012(win8)
開源的IDE也是有的,ECLIPSE。。。就支持很多語言的開發
補充:
你不想用IDE,你就首先聲明咯,我也不知道你不想用IDE。
別人給你回答就尊重點,你自己問題沒講清楚,別擦擦擦的。
不過C++的命令行調試我確實不懂,用這東西實在劃不來。
抱歉,幫不到你。
❺ linux vi如何進入命令模式
1、首先打開linux vi,進入到編輯頁面中,
❻ C語言的命令行寫在哪裡啊
用滑鼠點擊屏幕左下角的開始-》運行,在運行對話框中輸入「cmd」進入命睜亮令行模式,在命令行模式下進入你州早祥程序的當冊搏前目錄,然後在提示符後輸入:程序名 空格 需要計算行數的那個文件名。這樣你的程序在啟動時就以那個文件名作為main函數的參數了。
❼ vi編輯器有3種基本工作模式
3種基本工作模式分別是:命令模式、文本輸入模式和末行模式。下面詳細介紹這3種模式:
命令行模式:該模式是進入vi編輯器後的默認模式。任何時候,不管用戶處於何種模式,按下Esc鍵即可進入命令模式。在該模式下,用戶可以輸入 vi命令,用於管理自己的文檔。此時從鍵盤上輸入的任何字元都被當作編輯命令來解釋。若輸入的字元是合法的vi命令,則vi在接受用戶命令之後完成相應的動作。但需注意的是,所輸入的命令並不回顯在屏幕上。若輸入的字元不是vi的合法命令,vi會響鈴報警。
文本輸入模式:在命令模式下輸入插入命令i、附加命令a、打開命令o、修改命令c、取代命令r或替換命令s都可以進入文本輸入模式。在該模式下,用戶輸入的任何字元都被vi當做文件內容保存起來,並將其顯示在屏幕上。在文本輸入過程中,若想末行模式:末行模式也稱ex轉義模式。在命令模式下,用戶按「:」鍵即可進入末行模式下,此時vi會在顯示窗口的最後一行(通常也是屏幕的最後一行)顯示一個「:」作為末行模式的說明符,等待用戶輸入命令。多數文件管理命令都是在此模式下執行的(如把編輯緩沖區的內容寫到文件中等)。末行命令執行完後,vi自動回到命令模式。如果要從命令模式轉換到編輯模式,可以鍵入命令a或者i。如果需要從文本模式返回,則按 Esc鍵即可。在命令模式下輸入「:」即可切換到末行模式,然後輸入命令。
末行模式:末行模式也稱ex轉義模式。在命令模式下,用戶按「:」鍵即可進入末行模式下,此時vi會在顯示窗口的最後一行(通常也是屏幕的最後一行)顯示一個「:」作為末行模式的說明符,等待用戶輸入命令。多數文件管理命令都是在此模式下執行的(如把編輯緩沖區的內容寫到文件中等)。末行命令執行完後,vi自動回到命令模式。如果要從命令模式轉換到編輯模式,可以鍵入命令a或者i。如果需要從文本模式返回,則按 Esc鍵即可。在命令模式下輸入「:」即可切換到末行模式,然後輸入命令。
❽ 在VC++中為什麼C程序運行後答案一閃而過來不及看清
先解釋一下為什麼一閃而過:
當你山敏在vc++里運行程序,vc++將會調用行命令模乎培式(即command.com程序),打開你的程序。當程序執行完畢後將自動退出行命令模式。歲唯唯所以你來不及看你的程序的輸出。
要解決這個問題,最簡單的方案就是在你的代碼的最後,return
0;之前,加上
getchar();
//getch()似乎不是ANSI
C的一部分
這個語句將使得你的程序做最後一件事情:從輸入緩沖區(輸入流stdin)中讀一個字元。也就是說在你的其他程序結束後,還要敲一下回車才會結束所有程序。
但是,要注意的是:當程序快結束時,如果你的輸入緩沖區中已經有字元了,c語言將直接從緩沖區中讀取一個字元,然後結束程序。而不等待你的輸入。
比如:
#include<stdio.h>
int
main(void)
{
putchar(getchar());
//你的程序只有這么一句,作用是輸入一個字元,然後計算機將它輸出
getchar();//這是你為了防止一閃而過而加的語句
return
0;
}
這個程序結束時將仍然一閃而過。原因在於第一條getchar()表達式執行的時候,將返回你輸入的第一個字元,後面的字元(包括回車字元'\n')留在了緩沖區。要解決這類問題,得隨機應變,沒有統一的解決方案。在這個例子中,可以這樣:
#include<stdio.h>
int
main(void)
{
putchar(getchar());
//你的程序只有這么一句,作用是輸入一個字元,然後計算機將它輸出
while(getchar()!='\n')
continue;//這個循環將把輸入緩沖區的內容清掉,一直清到換行符。
getchar();//這是你為了防止一閃而過而加的語句
return
0;
}
復雜一點的解決方案是,不要在visual
c++中執行。你先生成可執行文件,然後打開行命令模式(運行->cmd),然後在那裡運行你的程序,就不會自動退出了。
sorry,剛才試了一下,ctrl+f5確實可以,parason說的很對。
本想不發了,但是寫了半天,不發也可惜,況且,從我寫的這些,你可以更加理解一些原理性的東西。而且,我寫的是一個通用的辦法,即使不是visual
c++也可以用。
不過最佳答案千萬別選我,因為我的答案和parason的比起來確實很愚蠢。