如何在 Visual Studio 2015 调试中将“%”符号作为命令行参数 (argv) 传递?
Posted
技术标签:
【中文标题】如何在 Visual Studio 2015 调试中将“%”符号作为命令行参数 (argv) 传递?【英文标题】:How do I pass the '%' symbol as a command line argument (argv) in Visual Studio 2015 Debugging? 【发布时间】:2016-05-10 08:13:40 【问题描述】:我使用的是 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 变成了“笑脸”。我该如何避免这种行为?我可以确定编译后,从命令行运行时 % 将被解释为 % 吗?
对不起,如果以前有人问过这个问题;这并不容易搜索。提前致谢。
【问题讨论】:
我确实试过了,得到了 %☻。这是我的第一个想法(虽然找不到任何可以确认的东西)。 【参考方案1】:您必须将%
替换为%25
,因为%
被解释为escape sign。
【讨论】:
是的,就是这样。奇怪的是我以前从未遇到过这种情况。谢谢。以上是关于如何在 Visual Studio 2015 调试中将“%”符号作为命令行参数 (argv) 传递?的主要内容,如果未能解决你的问题,请参考以下文章