21xrx.com
2024-11-03 21:39:05 Sunday
登录
文章检索 我的文章 写文章
如何在C++中获取文件名
2023-07-12 06:15:01 深夜i     --     --
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函数。使用这些方法,您可以轻松地在您的代码中获取文件名,并将其用于您的应用程序的各种操作中。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复