环境变量位于char *中,如何将其获取到std :: string
||
我正在使用
GetEnvironmentStrings()
检索win32中的环境变量。它返回一个“ 1”。
我想在此字符串(字符指针)中搜索特定的环境变量(是的,我知道我可以使用GetEnvironmentVariable()
,但是我这样做是因为我也想在控制台上打印所有环境变量-我只是在摆弄)。
所以我想我可以将ѭ1转换为std :: string并在其上使用find(我知道我也可以使用c_string find函数,但我更担心尝试将ѭ1复制到std::string
)。但是下面的代码似乎没有将所有的ѭ1都复制到ѭ5中(这使我认为ѭ1中有一个ѭ8字符,但实际上不是结尾)。
char* a = GetEnvironmentStrings();
string b = string(a, sizeof(a));
printf( \"%s\", b.c_str() ); // prints =::=
有没有一种方法可以将ѭ1copy复制为std::string
(我知道我可以使用strcpy()
将const char*
复制为字符串,但不能复制char*
)。
没有找到相关结果
已邀请:
7 个回复
芜任亮蜡
变成
,而您又不想使用
或
。 这是针对常规C字符串的-但是
返回的格式有点奇怪,您可能需要手动将其插入。
揽芳僵迷仇
将返回
的大小,即一个指针(通常为32位或64位)。您在那儿寻找功能ѭ25.。实际上根本不需要它:
应该足以获取第一个环境变量对。
傻零凰死授
茶鬼失形
您将获得a的大小,它是一个指针,可能为4。因此,您将获得前4个字符。我不确定您实际上要做什么,但是您应该只能说:
缮记箔
雇砰
缕嚏冻
)
作为示例,我们将定义2个环境变量:
将是:
每个变量都以
结尾-最后,完整的环境字符串(
)将以附加的
终止。
将把大小返回到第一个出现的终止符
。最后一个字符串将始终为空。
多字节字符 对于多字节字符,它也可以工作: