分析文件名格式的字符串

Analyzing a string for file name format

本文关键字:字符串 格式 文件名      更新时间:2023-10-16

文件名正在向下传递给函数。需要检查字符串以".bmp"

结尾

我如何检查以后打开文件?

例如:如果字符串包含"picture.txt",它将告诉用户字符串的格式不正确。如果字符串包含"picture.bmp",它应该接受它,以便以后打开文件时使用。

提前感谢!

你用的是什么操作系统?如果它是Windows/Visual c++,你有一些函数可以正确地给你一个文件名的扩展名(例如_spiitpath)。如果您想要一些可移植的东西,您可以使用boost::filesystem来解析名称。

您应该使用这些函数而不是尝试自己编造一些东西的原因是,可能存在您没有考虑到的角落或边缘情况,从而导致您的代码给出错误的结果。

你可以这样做:

bool hasExtension(const string& filename, const string& extension)
{
  size_t fnlen = filename.length();
  size_t exlen = extension.length();
  if (fnlen < exlen)
     return false;
  return memcmp(filename.c_str() + fnlen - exlen, extension.c_str(), exlen) == 0;
}

int main()
{
  cout << hasExtension("file.txt", ".txt") << endl;
}