如何在 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) 传递?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio 2015 调试中将“%”符号作为命令行参数 (argv) 传递?

在 Visual Studio 2015 上调试时如何查看 Qt5 QString 内容

调试模式在 Visual Studio 2015 中不起作用

如何在 Visual Studio 2015 中开始调试时自动附加 Web 项目以处理“MicrosoftEdgeCP.exe”(Microsoft Edge)

Visual Studio 2015 远程调试(联调)

如何将 django 项目的默认 IP 设置为 0.0.0.0 以在 Visual Studio 2015 中进行调试?