如何在MFC+中将CString转换为字符串数组+;? 在MFC C++中,我尝试逐行读取文本,并在ListCuff./P>中显示它。

如何在MFC+中将CString转换为字符串数组+;? 在MFC C++中,我尝试逐行读取文本,并在ListCuff./P>中显示它。,c++,arrays,string,mfc,C++,Arrays,String,Mfc,文本文件的格式为: 名称地址Rollno类 因此,文本将包含 约翰英格兰25 4 等等 我想在listcontrol中显示它们 但是,我使用此代码读取文件 if (myFile.Open(_T("c:\\Users\\blabla\\Desktop\\bla.txt"), CFile::modeRead)) { while (myFile.ReadString(strLine)) { strMsg += strL

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

因此,文本将包含

约翰英格兰25 4

等等

我想在listcontrol中显示它们

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

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"));
    }
在上面,斯特林将印刷“约翰英格兰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);
messagebox只会给我一个“嘿”字,到目前为止效果很好,但是如果我的文本文件是

hey how are you
hi how are you 

这里的resToken AfxMessageBox(resToken,MB_图标信息);在这一行中,会给出两个messagebox警报,一个是hey,一个是hi。不知道为什么会这样。有人能帮我解决这个问题吗?

可以用来在任意分隔符处拆分字符串。在您的用例中,您将传递分隔符的
\T(“”)

可用于在任意分隔符处拆分字符串。在您的用例中,您将传递分隔符的
\u T(“”)

您好,谢谢。我尝试过这种方法,我觉得我离解决方案更近了。我一直在尝试正确解析文本文件中的数据,但我在某些地方遗漏了一些东西。我编辑了这篇文章,如果你能看一看,那太好了
break
在第一次迭代时退出封闭的
循环。因此,您只解析出第一个令牌。嗨,谢谢。我尝试过这种方法,我觉得我离解决方案更近了。我一直在尝试正确解析文本文件中的数据,但我在某些地方遗漏了一些东西。我编辑了这篇文章,如果你能看一看,那太好了
break
在第一次迭代时退出封闭的
循环。因此,您只解析出第一个标记。这是否回答了您的问题?这回答了你的问题吗?