[英]Separate command line into separate const char *
我現在正在為學校開發服務器應用程序。 目前,我正在嘗試中斷命令行條目,該條目應讀入四個單獨的const char *。
int state = 0;
char *token = std::strtok(commandLine, " ");
while(token != NULL)
{
switch(state)
{
case 0: c = token; break;
case 1: u = token; break;
case 2: p = token;break;
case 3: a = token; break;
}
token = std::strtok(NULL, " ");
state++;
}
const char* command = c.c_str();
const char* user = u.c_str();
const char* password = p.c_str();
const char* args = a.c_str();
我意識到這不是很好的優化; 我一直在嘗試許多不同的解決方案,因為我一直在嘗試的一切都導致段錯誤。 謝謝您的幫助!
這是一個有趣的問題^ _ ^! 我嘗試在計算機上運行此代碼,並且在定義如下命令行時遇到相同的問題:
char* commandLine = "abc def ghi jkl";
原因是函數strtok將更改字符串commandLine,部分源代碼是:
for ( ; *str ; str++ )
if ( map[*str >> 3] & (1 << (*str & 7)) ) {
*str++ = '\0';
break;
}
因此,當我將定義更改為:
char commandLine[] = "abc def ghi jkl";
問題消失了。希望對您有用,謝謝〜
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.