gpt4 book ai didi

c++ - 获取不带扩展名的文件名?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:58:38 31 4
gpt4 key购买 nike

我是 C++ 世界的新手,我遇到了一个非常微不足道的问题,即获取不带扩展名的文件名。

我有包含sample.txtTCHAR变量,只需要提取sample,我使用了PathFindFileName函数它只返回我传递的相同值。

我尝试使用谷歌搜索解决方案,但还是没有成功?!

编辑:我总是得到三个字母的文件扩展名,我添加了以下代码,但最后我得到了类似 Montage (2)««þîþ 我如何在最后避免垃圾字符?

TCHAR* FileHandler::GetFileNameWithoutExtension(TCHAR* fileName)
{
int fileLength = _tcslen(fileName) - 4;
TCHAR* value1 = new TCHAR;
_tcsncpy(value1, fileName, fileLength);
return value1;
}

最佳答案

这是它是如何完成的。

#ifdef UNICODE //Test to see if we're using wchar_ts or not.
typedef std::wstring StringType;
#else
typedef std::string StringType;
#endif

StringType GetBaseFilename(const TCHAR *filename)
{
StringType fName(filename);
size_t pos = fName.rfind(T("."));
if(pos == StringType::npos) //No extension.
return fName;

if(pos == 0) //. is at the front. Not an extension.
return fName;

return fName.substr(0, pos);
}

根据 UNICODE 设置,返回一个 std::string 或 std::wstring。要返回到 TCHAR*,您需要使用 StringType::c_str();这是一个 const 指针,所以你不能修改它,并且在产生它的字符串对象被销毁后它是无效的。

关于c++ - 获取不带扩展名的文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6646702/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com