Re: [問題] readCmd()

作者: ric2k1 (Ric)   2012-10-29 00:49:46
我來貼一下:
bool
CmdParser::readCmd(istream& istr)
{
resetBufAndPrintPrompt();
bool newCmd = false;
while (!newCmd) {
ParseChar pch = getChar(istr);
if (pch == INPUT_END_KEY) {
if (_dofile != 0)
closeDofile();
break;
}
switch (pch) {
...
case NEWLINE_KEY : newCmd = addHistory();
cout << char(NEWLINE_KEY);
if (!newCmd) resetBufAndPrintPrompt();
break;
...
case TAB_KEY : { char tmp = *_readBufPtr; *_readBufPtr = 0;
string str = _readBuf; *_readBufPtr = tmp;
listCmd(str);
break; }
...
}
#ifdef TA_KB_SETTING
taTestOnly();
#endif
}
return newCmd;
}
以上是跟作業二不一樣的部分,
當然,"addHistory()" 改成 return bool,
所以只要加入新的 command 到 _history 之後 newCmd 就會變成 true.
※ 引述《XDucka (Duck)》之銘言:
: 老師的hw3.doc裡面提到readCmd的定義
: bool
: CmdParser::readCmd(istream& istr)
: {
: resetBufAndPrintPrompt();
: bool newCmd = false;
: while (!newCmd) {
: ParseChar pch = getChar(istr);
: if (pch == INPUT_END_KEY) {
: if (_dofile != 0)
: closeDofile();
: break;
: }
: switch(ch) {
: ... // Refer to the codes in homework #2
: }
: }
: return newCmd;
: }
: 我想問一下就是這個fuction裡面感覺完全沒有動到newCmd
: 也就是說return的值應該都是false吧??
: 但是我用gdb想debug的時候(輸入help)卻發現他變成true傳回來了
: 為什麼T_T
作者: ypf791 (路人1號)   0000-00-00 00:00:00
作者: vegired (翠玉白菜)   0000-00-00 00:00:00
作者: XDucka (Duck)   0000-00-00 00:00:00

Links booklink

Contact Us: admin [ a t ] ucptt.com