【问题标题】:How do I pass the '%' symbol as a command line argument (argv) in Visual Studio 2015 Debugging?如何在 Visual Studio 2015 调试中将“%”符号作为命令行参数 (argv) 传递?
【发布时间】: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 变成了“笑脸”。我该如何避免这种行为?我可以确定编译后,从命令行运行时 % 将被解释为 % 吗?

对不起,如果以前有人问过这个问题;这并不容易搜索。提前致谢。

【问题讨论】:

  • 我确实试过了,得到了 %☻。这是我的第一个想法(虽然找不到任何可以确认的东西)。

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


【解决方案1】:

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

【讨论】:

  • 是的,就是这样。奇怪的是我以前从未遇到过这种情况。谢谢。
猜你喜欢
  • 2018-12-04
  • 2011-04-11
  • 1970-01-01
  • 1970-01-01
  • 2016-05-13
  • 2016-09-28
  • 1970-01-01
  • 2019-07-19
相关资源
最近更新 更多