繁体   English   中英

如何将CString转换为MFC C++中的字符串数组?

[英]How to convert a CString to an array of strings in MFC C++?

在 MFC C++ 中,我试图逐行读取文本,并将其显示在 listcontrol 中。

文本文件的格式为:名称地址 Rollno Class

所以文本将包含

约翰英格兰 25 4

等等。

我想在列表控件中显示它们。

但是,我使用此代码阅读文件

if (myFile.Open(_T("c:\\Users\\blabla\\Desktop\\bla.txt"), CFile::modeRead))
    {
        while (myFile.ReadString(strLine))
        {
            strMsg += strLine + '\n';
 
            int lengtha = (strLine).GetLength();
            //SetDlgItemText(IDC_LIST3, strLine);
 
            char myString[256];
 
            AfxMessageBox(strLine, MB_ICONINFORMATION);
 
            //How do I iterate through strLine?

        }

    }
 
    else
    {
        AfxMessageBox(_T("Nope"));
    }

在上面,strLine 将打印“John England 25 4”,我想将其转换为类似 ["John", "England", "25", "4"] 的数组,然后遍历该数组以插入 listcontrol。

我是 MFC C++ 的新手,我似乎根本不明白该怎么做。 如果有人可以提供帮助,那就太好了。

编辑:我看到你可以标记化,所以这就是我到目前为止提出的

void CMFCTask2Try2Dlg::OnBnClickedButton1()
{
    // TODO: Add your control notification handler code here
    CStdioFile myFile;
    CString strLine;
    CString strMsg;
 
    if (myFile.Open(_T("c:\\Users\\blabla\\Desktop\\nana.txt"), CFile::modeRead))
    {
        while (myFile.ReadString(strLine))
        {
            strMsg += strLine + '\n'
 
            char myString[256];
 
 
            CAtlString str(strLine);
            CAtlString resToken;
 
            int curPos = 0;
            resToken = str.Tokenize(_T(" "), curPos);
            int i = 0;
            int nItem;
            while (resToken != _T(""))
            {
                _tprintf_s(_T("Resulting token: %s\n"), resToken);
 
                AfxMessageBox(resToken, MB_ICONINFORMATION);
                nItem = mcontrolz.InsertItem(i, resToken);
 
                resToken = str.Tokenize(_T(" "), curPos);
                break;
                //Here resToken prints
            }
        }
    }
    else
    {
        AfxMessageBox(_T("Nope"));
    }
 
    //myFile.Close();
}

所以如果我的文本文件只有

hey how are you

在这行代码中

AfxMessageBox(resToken, MB_ICONINFORMATION);

消息框只会给我“嘿”到目前为止效果很好,但如果我的文本文件是

hey how are you
hi how are you 

这里的resToken AfxMessageBox(resToken, MB_ICONINFORMATION); 在这一行将给出两个消息框警报,一个是嘿,一个是嗨,不知道为什么它给了我。 有人可以帮我解决这个问题吗?

CString::Tokenize可用于在任意分隔符处拆分字符串。 在您的用例中,您将传递_T(" ")作为分隔符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM