echo \x6e in shell, but called from c++, using variable

huangapple go评论78阅读模式
英文:

echo \x6e in shell, but called from c++, using variable

问题

我试图使用变量输出一个十六进制值。以下是一个没有变量的示例。

system("echo '\x6e'");
//输出:
//n

完美。

但这个不起作用:

for (int i=1; i<7; i++) {
system(("echo '\x" + to_string(i) + "e'").c_str());
}

// 这甚至不能编译。
// 编译器:
// 错误:\x没有后面的十六进制数字


如果你实际运行代码,就会有十六进制数字。我尝试\\\x,但它只会打印\\\x1e等。
英文:

I am trying to output a hex value using a variable for the number. Here is an example of it with no var.

system(&quot;echo &#39;\x6e&#39;&quot;);
//output:
//n

Perfect.

But this doesn't work:

for (int i=1; i&lt;7; i++) {
  system((&quot;echo &#39;\x&quot;+to_string(i)+&quot;e&#39;&quot;).c_str());
}

//Which does not even compile. 
//compiler:
//error: \x used with no following hex digits

Well if you actually let the code run there would BE hex digits. I try \\x but then it just literally prints \x1e etc.

答案1

得分: 1

这条注释解释了问题。可能的解决方案:

system("echo '\"s + static_cast<char>(i * 16 + 0xe) + \"'\"");
英文:

The comment explains the issue. Possible solution

system((&quot;echo &#39;&quot;s + static_cast&lt;char&gt;(i * 16 + 0xe) + &quot;&#39;&quot;).c_str());

huangapple
  • 本文由 发表于 2023年2月19日 00:06:04
  • 转载请务必保留本文链接:https://go.coder-hub.com/75494597.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定