【问题标题】:Getting the current directory, can I do it without knowing max buffer size?获取当前目录,我可以在不知道最大缓冲区大小的情况下做到吗?
【发布时间】:2012-12-24 08:14:27
【问题描述】:

C++中获取当前目录的语法是:

GetCurrentDirectory(DWORD nBufferLength, LPTSTR lpBuffer);

有没有办法在不知道最大缓冲区大小的情况下获取当前目录?

我只是担心如果我设置一个最大长度,有人会超过它,我的程序会失败。

我无法使用argv[],因为我使用的是 Win32。

【问题讨论】:

  • 这不是我定义的吗?还是已经为我定义了?
  • 已经定义好了。它是路径的最大长度,因此它不会返回任何字符多于该长度的内容。当然,你也可以走std::vector 路线,传递null。

标签: c++ windows directory


【解决方案1】:

如果你传递 NULL 作为缓冲区指针,0 作为缓冲区长度,函数将返回必要的缓冲区大小。

正如David Schwartz 指出的那样,这在 the documentation.

【讨论】:

  • "如果lpBuffer 指向的缓冲区不够大,则返回值指定缓冲区所需的大小,以字符为单位,包括空终止字符。" -- The docs
猜你喜欢
  • 2021-02-21
  • 2019-07-27
  • 2013-06-14
  • 2020-09-30
  • 2014-10-28
  • 2014-01-31
  • 1970-01-01
  • 2011-03-15
  • 1970-01-01
相关资源
最近更新 更多