【发布时间】:2019-10-19 19:51:06
【问题描述】:
我有一个这样的字符串:DialogTitle = IDD_SETTING_DLG 在一个保存文件中(我已经将它存储在一个名为 m_TextArray 的数组中)。
现在我想获取"IDD_SETTING_DLG" 部分(或至少" IDD_SETTING_DLG")并将其存储在CString 变量中。我使用了Tokenize 方法,但它不起作用。
这是我的代码:
BOOL CTab1::OnInitDialog()
{
UpdateData();
ReadSaveFile();
SetTabDescription();
UpdateData(FALSE);
return TRUE;
}
void CTab1::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_SHOWDES, m_ShowDes);
}
void CTab1::ReadSaveFile()
{
if (!SaveFile.Open(SFLocation, CFile::modeRead | CFile::shareDenyWrite, &ex))
{
ReadSettingFile();
}
else
{
for (int i = 0; i < 100; i++)
{
SaveFile.ReadString(ReadLine);
m_TextArray[i] = ReadLine.GetString();
}
}
}
void CTab1::SetTabDescription() //m_TextArray[2] is where i stored the text
{
Position = 0;
Seperator = _T("=");
m_ShowDes = m_TextArray[2].Tokenize(Seperator, Position);
while (!m_ShowDes.IsEmpty())
{
// get the next token
m_ShowDes = m_TextArray[2].Tokenize(Seperator, Position);
}
}
任何解决方案或提示将不胜感激。
【问题讨论】:
-
在什么情况下它不起作用?请解释一下。
-
@Ian 它没有在
IDC_SHOWDES编辑框上显示任何内容 -
试试
strtok()。查看this 答案: -
@Ian 你的意思是在while循环结束后调用
UpdateData(),还是在循环中调用它? -
MFC 更喜欢 CString::Tokenize 而不是 C 函数
strtok/strtok_s,后者甚至不兼容 UTF16