以下代码是否可行?
如果这段代码没有问题,能有人给我解释一下
std::vector<char> var;
size_t requiredSize;
getenv_s(&requiredSize, NULL, 0, "Something");
if (requiredSize == 0)
{
return ENV_NOT_EXIST;
}
if(var.size() < requiredSize)
var.resize(requiredSize);
// Get the value of the environment variable.
getenv_s(&requiredSize, &var[0], requiredSize, "Something");
std::string str(var.begin(),var.end());
如果这段代码没有问题,能有人给我解释一下
var
向量的begin()
和end()
值如何被更新吗?看起来这段代码直接修改了向量的内部数组,而不是通过std::vector
api进行操作——那么这些值如何被更新为实际大小呢?
std::vector
神奇地从var
变成svar
再变回var
的事实之外,是的,这样做是安全的。 - nikolas