如何在 Visual Studio 2015 调试中将“%”符号作为命令行参数 (argv) 传递?
How do I pass the '%' symbol as a command line argument (argv) in Visual Studio 2015 Debugging?
我正在使用 Windows 7,Visual Studio 2015,C++。
如果我传递一个包含“%”符号的命令行参数,当我从命令行 运行 与我使用 Properties->Configuration Properties->Debugging->Command Arguments
传递它时相比,我得到不同的结果。前者嘲笑我的期望。
为了演示,我使用了这段代码:
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int count;
cout << "\nCommand-line arguments:\n";
for (count = 0; count < argc; count++) {
cout << " argv[" << count << "] " << argv[count] << "\n";
}
return 0;
}
从命令行编译为 TestArgs 和 运行,我得到:
D:\TestArgs\x64\Debug>TestArgs.exe test %02 smiley
Command-line arguments:
argv[0] TestArgs.exe
argv[1] test
argv[2] %02
argv[3] smiley
D:\TestArgs\x64\Debug>
但是当我使用 Visual Studio 调试相同的参数时,我得到:
Command-line arguments:
argv[0] D:\Visual Studio 2015\Projects\TestArgs\x64\Debug\TestArgs.exe
argv[1] test
argv[2] ☻
argv[3] smiley
也就是说,%02 变成了 "smiley"。我如何避免这种行为?我可以确定一旦编译,% 将被解释为 % when 运行 来自命令行吗?
抱歉,如果之前有人问过这个问题;搜索起来并不容易。提前致谢。
您必须将 %
替换为 %25
,因为 %
被解释为 escape sign。
我正在使用 Windows 7,Visual Studio 2015,C++。
如果我传递一个包含“%”符号的命令行参数,当我从命令行 运行 与我使用 Properties->Configuration Properties->Debugging->Command Arguments
传递它时相比,我得到不同的结果。前者嘲笑我的期望。
为了演示,我使用了这段代码:
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int count;
cout << "\nCommand-line arguments:\n";
for (count = 0; count < argc; count++) {
cout << " argv[" << count << "] " << argv[count] << "\n";
}
return 0;
}
从命令行编译为 TestArgs 和 运行,我得到:
D:\TestArgs\x64\Debug>TestArgs.exe test %02 smiley
Command-line arguments:
argv[0] TestArgs.exe
argv[1] test
argv[2] %02
argv[3] smiley
D:\TestArgs\x64\Debug>
但是当我使用 Visual Studio 调试相同的参数时,我得到:
Command-line arguments:
argv[0] D:\Visual Studio 2015\Projects\TestArgs\x64\Debug\TestArgs.exe
argv[1] test
argv[2] ☻
argv[3] smiley
也就是说,%02 变成了 "smiley"。我如何避免这种行为?我可以确定一旦编译,% 将被解释为 % when 运行 来自命令行吗?
抱歉,如果之前有人问过这个问题;搜索起来并不容易。提前致谢。
您必须将 %
替换为 %25
,因为 %
被解释为 escape sign。