【问题标题】:How to split word from CString?如何从 CString 中拆分单词?
【发布时间】:2013-06-18 09:30:12
【问题描述】:

我有一个 第一种情况: CString stVal = " dsc | resource.c |* ";

第二种情况:

CString stVal = " resource.c |MS";

我只想要两种情况下的文件名。

请注意,我使用的是 Visual Studio 6.0。

你有什么想法吗? 提前致谢。

【问题讨论】:

  • 你试过CString::Tokenize吗?
  • 我正在使用 vs 6.0。不支持标记化...
  • 使用 CString::Find 找到 "." 的位置或“.c”。然后后退一步,直到一个非字母数字字符找到文件名的开头。然后使用 CString::Mid 提取。

标签: visual-c++ mfc atl cstring


【解决方案1】:

CString strLine="dsc | resource.c |*";

    char* lpszToToken = stLine.GetBuffer(stLine.GetLength());
    char* lpszToken = strtok(lpszToToken, "|");
    while(lpszToken != NULL)
    {
        lpszToken = strtok(NULL, "|");
        CString str = lpszToken;
        if(str.Find(".") != -1) {
            stLine = str;
            break;
        }

【讨论】:

    【解决方案2】:

    最近在做MFC实验遇到同样的问题,最后通过下面的代码解决了。

    split(CString A) {
        CStringList* returnStringList = new CStringList;
        CString Seperator = L"|";//custom your serperator here
        int position = 0;
        CString token = A.Tokenize(Seperator, position);
        returnStringList->AddTail(token);
        while (!token.IsEmpty()) {
            token = A.Tokenize(Seperator, position);
            returnStringList->AddTail(token);
        }
        return returnStringList;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-18
      • 2016-04-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多