除了善良纯洁的托管解决方案由埃里克,它可能是值得一提的,为了完整起见,该Windows还提供了
CommandLineToArgvW分手字符串转换成字符串数组功能:
LPWSTR *CommandLineToArgvW( LPCWSTR lpCmdLine, int *pNumArgs);解析Unipre命令行字符串,并以类似于标准C运行时argv和argc值的方式返回指向命令行参数的指针数组以及此类参数的计数。
在“ 使用CommandLineToArgvW()API将命令行字符串转换为Args
[] ”中找到从C#调用此API并在托管代码中解压缩结果字符串数组的示例。下面是相同代码的稍微简化的版本:
[Dllimport("shell32.dll", SetLastError = true)]static extern IntPtr CommandLineToArgvW( [MarshalAs(UnmanagedType.LPWStr)] string lpCmdLine, out int pNumArgs);public static string[] CommandLineToArgs(string commandLine){ int argc; var argv = CommandLineToArgvW(commandLine, out argc); if (argv == IntPtr.Zero) throw new System.ComponentModel.Win32Exception(); try { var args = new string[argc]; for (var i = 0; i < args.Length; i++) { var p = Marshal.ReadIntPtr(argv, i * IntPtr.Size); args[i] = Marshal.PtrToStringUni(p); } return args; } finally { Marshal.FreeHGlobal(argv); }}

![在C#中将包含命令行参数的字符串拆分为string [] 在C#中将包含命令行参数的字符串拆分为string []](http://www.mshxw.com/aiimages/31/447176.png)
