删除 CString 的开头
Delete the begin of a CString
>我以CString的形式接收文件路径。例如:C:\Program Files\Program\Maps\World\North-America
我需要删除地图之前的所有内容。即 C:\Program Files\Program\,但此文件路径可能不同。
我试过了:
CString noPath = fullPath;
fullPath.Truncate(fullPath.ReverseFind('Maps'));
noPath.Replace(_T(fullPath),_T(""));
这并不一致。它在错误的位置剪切了一些文件路径。该解决方案不需要使用截断/替换,但我不确定如何做到这一点
我熟悉的CString
没有Truncate
成员,ReverseFind
只适用于单个字符,不适用于子字符串; 所以fullPath
的类型对我来说是一个谜。
我注意到的一件事:_T(fullPath)
出现在您的代码中,但_T
宏仅适用于文字(带引号的字符串或字符)。
无论如何,这是一个仅限CString
的解决方案。
CString TruncatePath(CString path, CString subdir) {
CString sub = path;
const int index = sub.MakeReverse().Find(subdir.MakeReverse());
return index == -1 ? path : path.Right(index + subdir.GetLength());
}
...
CString path = _T("C:\Program Files\Program\Maps\World\North-America");
CString sub_path = TruncatePath(path, _T("Maps\"));
给你sub_path
: MapsWorldNorth-America
您可以使用Delete
函数来实现此目的。
例如:
CString path(_T("C:\Program Files\Program\Maps\World\North-America"));
path.Delete(0, path.Find(_T("Maps"))); //pass first index and number of count to delete
现在变量path
具有值Maps\World\North-America
相关文章:
- 在C++中使用Cstring反转字符串
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 如何转换真实路径 CString c++
- 在 C++11 中,如何查找并返回以给定字符串开头的字符串向量中的所有项?
- 字符串开头的分隔符
- 设计将引用元素移动到开头的数据结构.C++
- 如何使字符串出现在编译的二进制可执行文件的开头?
- 为什么 std::next 在以空地图开头馈送时卡住
- 如何在 Arduino 字符串的开头添加元素.类似于 JS unshift();
- __int64 CString 返回错误的值 - C++ MFC
- 如何将 SHFileOperation() 与 CString 路径一起使用
- 为什么使用 QString::right 在字符串开头省略逗号?
- c++ 如何在数组的开头添加值并为其编制索引?
- 如何在 的开头<x>和结尾<y>之间更改带有文件输出的字符串的值
- "Program ended with exit code: 0"出现在我的输出的开头?
- 如何找到循环列表的开头?
- 如何在C++中.txt文件的开头插入字符串
- 在_T值中使用 CString
- 没有大小参数的CString::GetBuffer()做什么
- 删除 CString 的开头