[英]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.