如何找到当前目录?

发布于 2024-10-14 03:02:46 字数 131 浏览 5 评论 0原文

我正在尝试读取我之前成功读取的文件。 我正在通过图书馆阅读它,并将其按原样发送到图书馆(即“myfile.txt”)。 我知道该文件是从工作/当前目录读取的。

我怀疑当前/工作目录已以某种方式更改。 我如何检查当前/工作目录是什么?

I am trying to read a file which I read previously successfully.
I am reading it through a library, and I am sending it as-is to the library (i.e. "myfile.txt").
I know that the file is read from the working/current directory.

I suspect that the current/working directory has changed somehow.
How do i check what is the current/working directory?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

寒江雪… 2024-10-21 03:02:46

由于您添加了 Visual-C++ 标签,我将建议使用标准 Windows 函数来完成此操作。 GetCurrentDirectory

用法:

TCHAR pwd[MAX_PATH];
GetCurrentDirectory(MAX_PATH,pwd);
MessageBox(NULL,pwd,pwd,0);

Since you added the visual-c++ tag I'm going to suggest the standard windows function to do it. GetCurrentDirectory

Usage:

TCHAR pwd[MAX_PATH];
GetCurrentDirectory(MAX_PATH,pwd);
MessageBox(NULL,pwd,pwd,0);
一绘本一梦想 2024-10-21 03:02:46

Boost 文件系统 库提供了一个干净的解决方案

current_path()

Boost filesystem library provides a clean solution

current_path()
少女净妖师 2024-10-21 03:02:46

使用 _getcwd 来获取当前工作目录。

Use _getcwd to get the current working directory.

凑诗 2024-10-21 03:02:46

这是我不久前得到的最与平台无关的答案:

如何从 C 的“getcwd”函数返回 std::string

它相当冗长,但确实做了它应该做的事情,有一个很好的 C++ 接口(即它返回一个字符串,而不是一个多长的字符串) -你到底是吗?-(const) char*)。

要关闭有关 getcwd 弃用的 MSVC 警告,您可以执行以下操作:

#if _WIN32
    #define getcwd _getcwd
#endif // _WIN32

Here's the most platform-agnostic answer I got a while ago:

How return a std::string from C's "getcwd" function

It's pretty long-winded, but does exactly what it's supposed to do, with a nice C++ interface (ie it returns a string, not a how-long-are-you-exactly?-(const) char*).

To shut up MSVC warnings about deprecation of getcwd, you can do a

#if _WIN32
    #define getcwd _getcwd
#endif // _WIN32
携君以终年 2024-10-21 03:02:46

此代码适用于 Linux 和 Windows:

#include <stdio.h>  // defines FILENAME_MAX
#include <unistd.h> // for getcwd()
#include <iostream>

std::string GetCurrentWorkingDir();

int main()
{
   std::string str = GetCurrentWorkingDir();
   std::cout << str;
   return 0;
}
std::string GetCurrentWorkingDir()
{
    std::string cwd("\0",FILENAME_MAX+1);
    return getcwd(&cwd[0],cwd.capacity());
}

This code works for Linux and Windows:

#include <stdio.h>  // defines FILENAME_MAX
#include <unistd.h> // for getcwd()
#include <iostream>

std::string GetCurrentWorkingDir();

int main()
{
   std::string str = GetCurrentWorkingDir();
   std::cout << str;
   return 0;
}
std::string GetCurrentWorkingDir()
{
    std::string cwd("\0",FILENAME_MAX+1);
    return getcwd(&cwd[0],cwd.capacity());
}
夜光 2024-10-21 03:02:46

C++17 开始,可以使用 std::filesystem::current_path()

https://stackoverflow.com/a/75354649/760728

Since C++17, std::filesystem::current_path() can be used.

https://stackoverflow.com/a/75354649/760728

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文