我如何通过'%'在Visual Studio 2015调试中将符号作为命令行参数(argv)?

时间:2016-05-10 08:13:40

标签: c++ visual-studio-2015 command-line-arguments

我使用的是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 Debugging时,我得到:

Command-line arguments:
  argv[0]   D:\Visual Studio 2015\Projects\TestArgs\x64\Debug\TestArgs.exe
  argv[1]   test
  argv[2]   ☻
  argv[3]   smiley

也就是说,%02变成了笑脸&#34;。我该如何避免这种行为?我可以确定编译后,%从命令行运行时会被解释为%吗?

对不起,如果之前有人询问过;它不容易搜索。提前谢谢。

1 个答案:

答案 0 :(得分:3)

您必须将%替换为%25,因为%被解释为escape sign