2017-03-05 133 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