将 wchar_t 数组/字符串拆分为两个不同的数组/字符串
Posted
技术标签:
【中文标题】将 wchar_t 数组/字符串拆分为两个不同的数组/字符串【英文标题】:Splitting up wchar_t array/string into two different arrays/strings 【发布时间】:2015-10-13 01:19:11 【问题描述】:我之前搜索过,并没有真正找到关于这个主题的明确答案,我想要简单地说是这样的:
拖放功能为我提供了一个带有文件名的目录。
C:\Users\chaos\Desktop\Game Launcher V1.0.exe
我需要把这个字符串变成两个不同的字符串,这样它才能做到这一点
Directory: C:\Users\chaos\Desktop\
FileName: Game Launcher V1.0.exe
我认为有foruma 可以循环执行此操作,所以我想知道您对这种情况的意见是什么,我很想听听。谢谢:)
我在 Windows 上使用 Visual Studio 2015。(UTF16)
【问题讨论】:
这是 UTF16 还是别的什么?什么类型(wstring,一个数组...)? 你使用什么环境。显示在这个 d&d 上下文中使用的代码 我刚刚更新了主帖,Visual Studio 2015 上的 Windows。@Jacek Cz 我将在几秒钟内发布代码,我正在加载 VS。 您的编辑没有多大帮助。又是什么类型的?而在 Windows 中,UTF16 是可能的,但不一定是正确的,如果您不知道 UTF16 是什么,请将其作为研究的提示。 叹息。好吧,你已经有 3 票接近,还有 2 票要投。 [顺便说一句,如果您将 UTF16 与您的 IDE 一起列出,那一天您显然不明白 UTF16 是什么意思] 【参考方案1】:由于您使用的是 Windows,请查看 PathRemoveFileSpec()
、PathStripPath()
和 PathFindFileName()
函数,例如:
LPTSTR szFullFilename = ...; // value from drag&drop
int iLength = lstrlen(szFullFilename);
LPTSTR szDirectory = new TCHAR[iLength+1];
lstrcpy(szDirectory, szFullFilename);
PathRemoveFileSpec(szDirectory);
LPTSTR szFileName = new TCHAR[iLength+1];
lstrcpy(szFileName, szFullFilename);
PathStripPath(szFileName);
// use szDirectory and szFileName as needed...
delete[] szDirectory;
delete[] szFileName;
LPTSTR szFullFilename = ...; // value from drag&drop
int iLength = lstrlen(szFullFilename);
LPTSTR szDirectory = new TCHAR[iLength];
lstrcpy(szDirectory, szFullFilename);
LPTSTR szFileName = PathFindFileName(szDirectory);
if (szFileName != szDirectory)
*(szFileName-1) = 0;
// use szDirectory and szFileName as needed...
delete[] szDirectory;
【讨论】:
以上是关于将 wchar_t 数组/字符串拆分为两个不同的数组/字符串的主要内容,如果未能解决你的问题,请参考以下文章