我正在学习基础C++,现在我从用户那里获得了一个字符串,并且我想检查他们是否输入了整个文件名(包括.txt)。我有这个字符串,但我该如何检查它是否以“.txt”结尾?
string fileName;
cout << "Enter filename: \n";
cin >> fileName;
string txt = fileName.Right(4);
Right(int)
方法只适用于CString,因此上面的代码不起作用。我希望如果可能的话,能够使用普通字符串。有什么想法吗?
我正在学习基础C++,现在我从用户那里获得了一个字符串,并且我想检查他们是否输入了整个文件名(包括.txt)。我有这个字符串,但我该如何检查它是否以“.txt”结尾?
string fileName;
cout << "Enter filename: \n";
cin >> fileName;
string txt = fileName.Right(4);
Right(int)
方法只适用于CString,因此上面的代码不起作用。我希望如果可能的话,能够使用普通字符串。有什么想法吗?
bool ends_with(const std::string & s, const std::string & suffix) {
return s.rfind(suffix) == s.length() - suffix.length();
}
bool isEndsWith(const std::string& pstr, const std::string& substr) const
{
int tlen = pstr.length();
int slen = substr.length();
if(slen > tlen)
return false;
const char* tdta = pstr.c_str();
const char* sdta = substr.c_str();
while(slen)
{
if(tdta[tlen] != sdta[slen])
return false;
--slen; --tlen;
}
return true;
}
pstr[--tlen] != substr[--slen]
? - 6502const char *
是完全不必要的。 - Slava