繁体   English   中英

在C ++中使用“ set / p”

[英]Using “set /p” in C++

我正在尝试设置Windows命令行环境变量(以帮助自动启动需要用户输入的Windows进程),然后通过system()将其回显。

#include <iostream>
using namespace std;

int main() {
    system("set /p foo= foo=");
    system("echo %foo%");
    system("pause");
    return 0;
}

运行后,我收到以下反馈:

foo = bar

%foo%

按任意键继续 。

为了使程序正常工作,我需要接收“ bar”,即%foo%的内容,但这没有发生。

奇怪的是,如果将代码直接输入到命令行中,该代码将起作用。

C:\Users\JohnDoe>set /p foo= foo=
foo=bar

C:\Users\JohnDoe>echo %foo%
bar

为什么C ++代码不起作用?

编辑:

使用建议的更改,如下所示:

#include <iostream>
using namespace std;

int main() {
    system("set /p foo=\" Enter foo= \" & echo %foo%");
    system("pause");
    return 0;
}

返回此反馈:

输入foo = bar

%foo%

按任意键继续 。

使用以下代码有效,但是会打开第二个窗口:

#include <iostream>
using namespace std;

int main() {
    system("set /p foo=\" Enter foo= \" & start echo %foo%");
    system("pause");
    return 0;
}

输入foo = bar按任意键继续。

然后在第二个窗口中:

酒吧

system运行命令解释器的新实例。 在该过程中设置环境变量不会影响程序自身的过程。 不幸的是,C ++标准库对环境变量的支持非常有限:只是一个函数getenv

为了您的目的,在Windows中,您可以改为发出类似system( "set foo=bar & run_that_program" );的调用system( "set foo=bar & run_that_program" );

您可以使用SetEnvironmentVariable函数直接在C程序中设置环境变量。 (当然,您可以提示用户使用常规的CI / O功能进行设置的值。)

这样的变量应该由以system()开始的程序继承。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM