将 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 数组/字符串拆分为两个不同的数组/字符串的主要内容,如果未能解决你的问题,请参考以下文章

C将一个char数组拆分为不同的变量

将 wchar_t* 转换为字符串 [重复]

Javascript 拆分数组

拆分一个字符串并将其放入两个数组中

如何将 char 数组转换为 wchar_t 数组?

java中金额的拆分计算怎么写