维基部分
在 C++17 中,您正在寻找filesystem
:
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
std::cout << "Current path is " << fs::current_path() << '\n';
}
请参阅cppreference 文件系统
在 linux API 中,您正在寻找getcwd
:
#include <string.h>
#include <unistd.h>
#include <iostream>
int main() {
char buf[1 << 10];
if (nullptr == getcwd(buf, sizeof(buf))) {
printf("errno = %s\n", strerror(errno));
} else {
std::cout << buf << std::endl;
}
}
请参阅linux 手册页 getcwd
你的部分
你做错了什么是你不能连接char *
或char []
与+
. 您应该尝试strcat
from<cstring>
或+
在将其转换为std::string
.
#include <unistd.h>
#include <cstring>
#include <iostream>
#define GetCurrentDir getcwd
int main() {
char config_db_path[1 << 10];
GetCurrentDir(config_db_path, sizeof(config_db_path)); // a typo here
strcat(config_db_path, "/config_db");
// concatenate char * with strcat rather than +
FILE* fpointer = fopen(config_db_path, "w");
fclose(fpointer);
}