21xrx.com
2025-03-24 16:56:12 Monday
文章检索 我的文章 写文章
如何在C++中获取文件名
2023-07-12 06:15:01 深夜i     13     0
C++ 获取 文件名

在C++编程中,获取文件名是一个常见的需求。文件名可以用于打印输出或处理文件,但许多新手程序员对如何获取文件名感到困惑。实际上,C++提供了几种方法来获取文件名,下面将介绍其中两种常用的方法。

方法一:使用windows.h头文件中的GetFullPathName函数

GetFullPathName函数是Windows API中的一个函数,它可以获取文件的完整路径名,包括文件名和路径。对于此方法,您需要包括Windows头文件,并使用GetFullPathName函数。

以下是使用GetFullPathName函数获取文件名的示例代码:

#include <windows.h>
#include <iostream>
using namespace std;
int main()
{
  TCHAR szBuf[MAX_PATH] = { 0 };
  if (GetFullPathName(_T("C:\test.txt"), MAX_PATH, szBuf, nullptr) != 0)
  
    cout << "The file name is: " << szBuf << endl;
  
  else
  
    cout << "Failed to get the file name";
  
  return 0;
}

在此示例中,我们使用了GetFullPathName函数来获取名为test.txt的文件的文件名。该函数返回的完整文件路径名存储在名为szBuf的缓冲区中,我们可以使用cout语句将其输出到控制台。如果未能成功获取文件名,则输出“无法获取文件名”。

方法二:使用cstring库中的strrchr函数

另一种获取文件名的方法是使用C++中的字符串处理函数。要使用这种方法,您需要包括cstring头文件。 strchr函数可以在字符串中查找指定的字符,并返回指向该字符的指针。在文件路径中,文件名通常被包含在路径中的最后一个反斜杠后面。因此,我们可以使用此函数来获取指向文件名的指针。 然后,我们可以使用标准字符串函数来从这个指针中提取文件名。

以下是使用strrchr函数获取文件名的示例代码:

#include <cstring>
#include <iostream>
using namespace std;
int main()
{
  char szPath[] = "C:\test.txt";
  char* pszFileName = strrchr(szPath, '\\');
  if (pszFileName != nullptr)
  {
    pszFileName++; //将指针移动到文件名的第一个字符
    cout << "The file name is: " << pszFileName << endl;
  }
  else
  
    cout << "Failed to get the file name";
  
  return 0;
}

在此示例中,我们使用了strrchr函数来搜索字符串“C:\test.txt”中的最后一个反斜杠,并返回指向该字符的指针。我们将指针移到文件名的第一个字符,并将其输出到控制台。如果未能成功获取文件名,则输出“无法获取文件名”。

总结

通过以上两种方法,您可以在C++代码中轻松获取文件名。如果您使用Windows操作系统,则可以使用Windows API中的GetFullPathName函数,而如果您想使用标准C++函数,则可以使用cstring库中的strrchr函数。使用这些方法,您可以轻松地在您的代码中获取文件名,并将其用于您的应用程序的各种操作中。

  
  

评论区

请求出错了