該方法使用向量(inputVector,成員變量)並將其拆分爲char * []。每當你遇到一個「;」在矢量中,打印出存儲在參數中的最後一組char *。即使向量大小爲14,循環也會在第5個循環中退出。C++程序在條件爲假前退出循環
矢量數據(新行分開的項目):
/bin中/回波
killroy
是
這裏;
;
xyzzy
;
不存在程序
;
/bin/true
;
/bin/false
;
void TrivialShell::splitArguments() {
char* args[MAX_ARGS];
int inputVectorIdx = 0;
int currentArgsIdx = 0;
int startingArgsIdx = 0;
while (inputVectorIdx < inputVector.size()) {
if (inputVector[inputVectorIdx] == ";") {
for (int k = startingArgsIdx; k <= currentArgsIdx; k++) {
cout << args[k];
}
startingArgsIdx = currentArgsIdx + 1;
}
else {
args[currentArgsIdx] =
const_cast<char*>(inputVector[inputVectorIdx].c_str());
}
inputVectorIdx++;
currentArgsIdx++;
}
}
但它在退出之前正常打印前四? – 2013-04-11 23:45:41
這裏沒有足夠的代碼來確定它是如何工作的 – Patashu
這是一項家庭作業嗎?是否有一個原因,你將這個函數的'std :: string's轉換爲'char *'s? – JBentley