gpt4 book ai didi

C++ 使用 GetEnvironmentVariable() 的完整路径写入文件错误

转载 作者:行者123 更新时间:2023-11-27 23:19:42 26 4
gpt4 key购买 nike

我是 C++ 新手,但想学习。我有一个小程序可以将一些信息写入我的 \etc\hosts在 Windows 中;我得到 %WINDIR%通过 GetEnvironmentVariable() 变量,如果我手动输入完整路径一切正常,但是当我用 WINDIR 替换时变量我的代码没有编译。我知道我做错了什么。

#include <windows.h>
#include <ios>
#include <fstream>

char buffer[1000];
int main() {
GetEnvironmentVariable("WINDIR",(char*)&buffer,sizeof(buffer));
std::ofstream log;
log.open("%s\\system32\\drivers\\etc\\hosts", buffer);
log << "127.0.0.1 domain.com\n" << std::endl;
return 0;
}

我遇到了非常难看的错误,例如:

C:\Documents and Settings\xtmtrx\Desktop\coding\windir.cpp no matching function for call to `std::basic_ofstream<char, std::char_traits<char> >::open(const char[30], char[1000])'

最佳答案

ofstream 无法为您格式化路径。您需要单独执行此操作,例如:

#include <windows.h>
#include <ios>
#include <fstream>

char buffer[1000] = {0};
int main() {
GetEnvironmentVariable("WINDIR",buffer,sizeof(buffer));
strcat(buffer, "\\system32\\drivers\\etc\\hosts");
std::ofstream log;
log.open(buffer, ios_base::ate);
log << "127.0.0.1 domain.com\n" << std::endl;
return 0;
}

仅供引用,您应该使用 GetWindowsDirectory()GetSystemDirectory()SHGetSpecialFolderPath()SHGetKnownFolderPath() 而不是 GetEnvironmentVariable()。在将路径连接在一起时,您应该使用 PathCombine(),以确保斜线正确。

关于C++ 使用 GetEnvironmentVariable() 的完整路径写入文件错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14084546/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com