cplusplus.com 关于getenv()
状态的文档...
返回的指针指向一个内部内存块,其内容或有效性可以通过进一步调用来改变
getenv
...我的意思是,“如果您想保留内容,请复制它。” 所以,因为我需要检索几个变量,我写了几个小包装函数:
#include <iostream>
#include <string.h>
using namespace std;
void getEnv (char *val, const char *var) {
val = nullptr;
char *enVar = getenv(var);
if (enVar != nullptr) {
val = new char[strlen(enVar) + 1];
strcpy(val, enVar);
}
}
void getEnv (int &val, const char *var) {
val = -1;
char *enVar = getenv(var);
if (enVar != nullptr) {
val = atoi(enVar);
}
}
int main() {
char *textMode = nullptr;
int cLen = 0;
getEnv(cLen, "CONTENT_LENGTH");
cout << cLen << endl << endl;
getEnv(textMode, "TEXT_MODE");
if (textMode == nullptr)
cout << "Not set.";
else
cout << "[" << textMode << "]<br>\n";
return 0;
}
该int
版本按预期工作,但我没有从该char
版本中得到任何回报,我的意思是什么:如果我没有*textMode
在声明时初始化它仍然是一个未初始化的指针。
是指针对吧?对?我知道它是。应该是指点 这些天我会弄清楚它们,但是嘿-至少我的链接列表可以工作了!耶!