簡體   English   中英

將命令行分隔為單獨的const char *

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM