2017-03-05 62 views
-2

我想從命令行輸入更改爲變量輸入。C++錯誤:從命令行輸入更改爲變量輸入

int main(int argc, char *argv[]) 
{ 
    std::cout << argc << std::endl; 
    std::cout << argv[0] << std::endl; 
    std::cout << argv[1] << std::endl; 
} 

更改爲此,但是當我想編譯此錯誤出現。

int main() 
{ 
    int argc = 2; 

    char *argv[] = 0; 

    argv[0] = "./server"; 
    argv[1] = "127.0.0.1"; 
} 

出現此錯誤:錯誤:數組初始化必須是一個初始化列表 的char * argv的[] = 0;

+0

'argv'是一個數組,不是指針。 'int foo [] = 0;'也是一個錯誤。 – molbdnilo

+1

猜測編程不起作用。拿起[一個很好的C++書](http://stackoverflow.com/q/388242/560648)並仔細研究它 –

+1

你打算爲'char * argv [] = 0行做什麼? –

回答

2

您必須提供數組的大小,因爲您沒有提供編譯器可從中推導出大小的初始化程序。再次,從C++ 11中,您不能將字符串文字綁定到char*,請使用const char*

int main() 
{ 
    constexpr int argc = 2; 
    const char *argv[argc] = {}; 

    argv[0] = "./server"; 
    argv[1] = "127.0.0.1"; 
} 

你可能想探索的std::array<std::string, 2>良好的使用來代替。

+0

謝謝,這解決了我的問題! – TopMaax

+0

@LightnessRacesinOrbit,我的疏忽。固定。謝謝。 – WhiZTiM