我有一个像这样的代码:
int contains(LPCTSTR name)
{
char * data = "test.txt";
}
如何检查是否name
包含“数据”?谢谢!
由于您使用的是 Windows 和TCHAR
,因此更惯用的解决方案是:
BOOL contains(LPCTSTR lpName) {
return _tcsstr(name, _T("data"));
}
除非你data
故意是 a char *
,在这种情况下答案会改变。
Unicode 或非 Unicode,您可以使用Shell Lightweight Utility String Functions:
int contains(LPTSTR name)
{
LPTSTR data = _T("test.txt");
if(StrStrI(name, data) != NULL)
{
return 1;
}
return 0;
}
您需要包含shlwapi.h
和链接shlwapi.lib
.
还要注意StrStrI
不区分大小写,要区分大小写,它只是StrStr
.
其他人建议使用 C 方法;由于您使用了标签“c++”,您可能希望使用该语言及其bool
返回类型或字符串类等特性。
此外,由于您正在为 Windows 编写代码(我阅读了LPCTSTR name
参数),您可能希望使用 Windows 特定的便捷类,例如CString
.
在这种情况下,您可以只使用CString::Find()
method,或者将其包装在这样的函数中(应该在 ANSI/MBCS 和 Unicode 版本中编译):
bool ContainsSomeText(const CString& name)
{
const TCHAR* data = _T("test.txt");
return (name.Find(data) >= 0);
}
此外,如果您想要不区分大小写的比较,您可能需要调用CString::MakeLower()
输入字符串(在这种情况下,因为您正在修改副本,所以按值传递):
bool ContainsSomeText(CString name)
{
const TCHAR* data = _T("test.txt"); // lower-case
return (name.MakeLower().Find(data) >= 0);
}