当我从char []变为字符串时,为什么我的冒号字符会消失?

 天晴的故事_665 发布于 2023-02-07 19:40

在我正在处理的旧Windows应用程序中,我需要从环境变量获取路径,然后附加到其上以构建文件路径.所以代码看起来像这样:

static std::string PathRoot; // Private variable stored in class' header file

char EnvVarValue[1024];
if (! GetEnvironmentVariable(L"ENV_ROOT", (LPWSTR) EnvVarValue, 1024))
{
    cout << "Could not retrieve the ROOT env variable" << endl;
    return;
}
else
{
    PathRoot = EnvVarValue;
}

// Added just for testing purposes - Returning -1
int foundAt = PathRoot.find_first_of(':');

std::string FullFilePath = PathRoot;
FullFilePath.append("\\data\\Config.xml");

ENV_ROOT的环境值在Windows系统控制面板中设置为"c:\ RootDir".但是当我运行程序时,我一直在FullFilePath中输入一个字符串,该字符串缺少冒号字符串以及根文件夹中的任何内容.它看起来像这样:" c\data\Config.xml ".

使用Visual Studio调试器,我在传递了GetEnvironmentVariable行之后查看了EnvVarValue,它向我展示了一个似乎具有我期望的所有字符的数组,包括冒号.但是在将它分配给PathRoot之后,将鼠标移到PathRoot上只会显示C并向下钻取它会显示一些关于坏ptr的信息.正如我所指出的那样,find_first_of()调用找不到冒号char.当附加完成时,它只保留初始C并删除RootDir值的其余部分.

所以似乎有一些关于冒号字符构造函数混乱的冒号字符.是的,我可以通过多种方式解决这个问题,方法是将冒号从env变量中删除,然后在代码中添加它.但我更愿意找到一种方法让它从环境变量中正确读取和使用.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有