【发布时间】:2015-10-23 21:55:49
【问题描述】:
我只想将一个包含一些空格的参数传递给我的函数 main。这是一个例子:
string param = "{\"abc\" \"de\"}"; // the string is {"abc" "de"}
boost::replace_all(param, "\"", "\\\""); // now it becomes: {\"abc\" \"de\"}
boost::replace_all(param, " ", "\\40"); // now it becomes: {\"abc\"\40\"de\"}
ShellExecute(GetDesktopWindow(), "open", "myMainTest.exe", param.c_str(), "", SW_SHOWNORMAL); // execute my function main in another project
//在myMainTest.exe的main函数中
cout<<argv[1];
我得到了这个结果:
{"abc"\40"de"}
表示双引号可以但是空格不行。
【问题讨论】:
-
仅供参考,如果您使用 raw string literal (
R""),则无需转义引号。 -
这不行吗?
string param = "{\"abc de\"}"; -
恭喜,它似乎有效。程序中的输出正是您传递给它的内容。那么你的问题到底是什么?你想传递别的东西吗?然后继续这样做。
-
@Roddy 不。如果我这样做,函数会将其视为两个参数。
-
@Thomas。我不这么认为。在这里阅读。 msdn.microsoft.com/en-us/library/17w5ykft.aspx
标签: c++ windows parameters space argv