- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个字符串 vector ,它是通过分析配置文件创建的。所有字符串应采用key=value
格式。我想遍历 vector ,并使用putenv函数将环境变量设置为键值对。
编码:
for(auto it = settings.begin(); it != settings.end(); it++) {
try {
auto i = it - settings.begin();
cout << i << endl;
putenv(settings.at(i));
} catch (...) {
cout << "Config is not in the format key=value ... please correct" << endl;
}
}
cannot convert ‘__gnu_cxx::__alloc_traits<std::allocator<std::basic_string<char> > >::value_type {aka std::basic_string<char>}’ to ‘char*’ for argument ‘1’ to ‘int putenv(char*)’
最佳答案
您正在混合使用C和C++的东西。
std::string
。 putenv
是一个“旧”函数,需要一个指向char
缓冲区(即C字符串)的指针。 std::string
makes it easy to get one of those:
putenv(settings.at(i).c_str());
// ^^^^^^^^
putenv
拥有您提供的缓冲区的“所有权”,并希望它可以持续“永远”。你不会的直到
std::string
被修改或销毁为止。还不够好!
strdup
分配
char
缓冲区的副本。然后是
putenv
(或操作系统)的责任,以后再释放它。
putenv(strdup(settings.at(i).c_str()));
// ^^^^^^^ ^
putenv
不在C或C++标准中,而是由POSIX提供的,因此您应检查操作系统的手册页,以确保正确使用它。
关于c++ - C++:遍历字符串 vector 并将索引用于putenv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60422958/
在我的 apache 实例上,它设置了一个环境变量 APP_ENV=development。我正在尝试在我的 PHP 端动态更改此设置(在启动测试套件的实例中),如下所示: putenv('APP_E
我正在尝试使用 GCC 4.7.1 (MinGW) 在 Windows 上编译 Qt 4.8.4。我编辑了 mkspec 以包含 C++11 特性(添加了 -std=c++11 标志)来编译 Java
当 php用作 apache模块,来自 apache 的环境变量 SetEnv指令可用于 php 的 getenv() , 但它似乎不适用于 C通过 stdlib 的 getenv() 扩展.至少它发
我在这里阅读了几篇文章,但仍然对 setenv() 的方式感到困惑作品: linux-where-are-environment-variables-stored where-is-the-envir
编辑:据我所知,我的问题是由于 PHP 的缺陷造成的。我已将此问题复制到 PHP 错误跟踪器:https://bugs.php.net/bug.php?id=74143并计划尝试实现修复。 puten
函数 putenv 不是线程安全函数,所以我想如果我在调用 putenv 之前调用 pthread_mutex_lock,我可以让 putenv 这样“线程安全”? 我试过了,但是当我运行它的时候,出
我需要用户在文本文件中定义我的程序所需的所有环境变量,如下所示。 MyDLLPath = C:\MyDLLPath 我的选项 = 选项 1 PATH = %MyDLLPath%;%PATH%; 在我的
我正在为系统编程类(class)开发自定义 shell。我们被指示实现内置的 setenv() 和 unsetenv() 命令,并提示检查 putenv()。 我的问题是 setenv(char*,
POSIX 系统调用 putenv 声明分配的内存字符串在调用 putenv 后不能被调用者释放。因此,您不能使用自动变量调用 putenv。 例子: #include #include #inc
putenv函数接受一个参数,一个字符串。此字符串应采用以下格式:KEY=VALUE . 引用:http://php.net/manual/en/function.putenv.php 将以下代码作为
我提前为一些代码转储道歉,我已经尽可能多地修剪了不重要的代码: // Global vars / mutex stuff extern char **environ; pthread_mutex_t
我正在学习 Laravel。我使用 WinNMP 安装了 php 7、mysql 和 nginx。我安装了composer,并通过它安装了laravel cli(Laravel\Installer)。
我需要从用户那里获取输入并处理变量。我需要具备以下功能: set varname = somevalue:将名为varname的环境变量的值设置为somevalue指定的值。 delete varna
在 php 中,运行: echo shell_exec("export http_proxy=http://myproxy.com:8080 2>&1"); echo shell_exec("env
尝试运行以下在 VS2012 中编译的代码时,我似乎遇到了内存损坏。 它在 VS2010 和以前的版本中工作正常: char *var1 = getenv("var1"); // Value for
我正在尝试在使用 g++ 编译的程序中使用 putenv stdlib 函数,包括标志和警告 - std=c++11 和 -Wall -Wextra。 程序可以像下面这样简单: #include #i
我尝试在 Ubuntu 13.04(64 位)上使用 gcc 4.7.3 和 clang 3.2.1 编译以下代码: #include #include #include int main()
我一直在思考环境变量,并有一些问题/意见。 putenv(char *string); 这个调用似乎有致命的缺陷。因为它不复制传递的字符串,所以你不能用本地调用它,并且不能保证堆分配的字符串不会被覆盖
我试图通过在此之前连接 str1 和 str2 在 UNIX 上使用 putenv() 。 我想在环境中添加一个变量或修改一个变量,所以我调用 putenv() (或者我可以调用 setenv() 相
pytest 的 monkeypatch模块提供了一个setenv 函数,它将设置环境变量名称为值。 为什么monkeypatch 提供这个?听起来和os.putenv一样?它提供了 prepend
我是一名优秀的程序员,十分优秀!