C ++:无法从'char *'转换为'char []'问题

时间:2009-11-04 04:56:05

标签: c++

我不是ac / c +程序员(我知道delphi),无论如何我试图编译用c ++编写的程序,我改变它接受一些参数(文件的路径,在原始代码中硬编码) )从命令行, orignial line是

char Filepath[50] = "F:\\mylib\\*.mp3";

我将其改为

char Filepath[50] = argv[1]; 

但我得到“无法从'char *'转换为'char []'”错误, 主要功能就像

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])

我该怎么办?即时通讯使用MSVC6。

感谢

4 个答案:

答案 0 :(得分:6)

使用:

char *Filepath = argv[1];

argv[1]已包含您想要的字符串时,无需为50个字符分配空间。此外,您无需确定命令行参数中的最大字符数;那个空间已经为你分配了。

但是请注意,上面的会复制字符串,所以如果你打算修改字符串(可能是通过附加扩展名或其他内容),那么你将不得不使用strcpy()或类似的解决方案。处理C中的字符串比Delphi中的手动字符复制工作要多得多。

答案 1 :(得分:6)

char Filepath[50] = argv[1];

为了复制字符串,如上例所示,您需要使用strcpy(或其任何变体)

另一种(更好的)方法是使用C ++字符串

std::string Filepath = argv[1];

也会复制字符串。

答案 2 :(得分:1)

strncpy(Filepath,argv [1],sizeof Filepath - 1)

或者,“格雷格说的是什么。”

答案 3 :(得分:0)

除了使用strncpy()或std :: string之外,最好还是看看为什么会出错。 我建议检查这个常见问题,看看指针和数组的来龙去脉。 http://c-faq.com/aryptr/index.html