【问题标题】:Commandline parameter getting truncated命令行参数被截断
【发布时间】:2014-09-10 19:40:44
【问题描述】:

我有一个用于解密某些值的简单应用程序。该应用程序将解密的值作为命令行参数,但我看到我从命令行传递的值被截断。

这是一个非常简单的sn-p

#include <iostream>

int main(int argc, char* argv[])
{
  std::cout << argv[1] << std::endl;
   return 0;
}

但是当我像这样运行这个应用程序时

./a.out GFjB5jgaUBVuN5c4fvuHvA==$YzgEE2VvWCMDImzTM9RYNQ==

我希望值 GFjB5jgaUBVuN5c4fvuHvA==$YzgEE2VvWCMDImzTM9RYNQ== 应该被完全读取,但它会被截断为 GFjB5jgaUBVuN5c4fvuHvA====

我犯了什么错误?

【问题讨论】:

  • 严格来说,由于你仍然得到最后两个==,它并没有真正被截断。

标签: c++ command-line-arguments


【解决方案1】:

$NAME 被 shell 替换为 shell 变量 NAME 的值。您没有一个名为$YzgEE2VvWCMDImzTM9RYNQ 的shell 变量,因此该部分被替换为空字符串。

为避免将$ 字符视为变量指示符,请将参数放在单引号中:

./a.out 'GFjB5jgaUBVuN5c4fvuHvA==$YzgEE2VvWCMDImzTM9RYNQ=='

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-17
    • 2015-07-21
    • 1970-01-01
    • 2016-09-28
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多