请问这是怎么回事,急

zhaohan8 2006-08-31 04:09:22
主要想把文本中单词添加到LISTBOX中去
void CReadtxtDlg::OnButton1()
{
CString filter;
filter="文本文件(*.txt)|*.txt||";
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,filter);
if(dlg.DoModal()==IDOK)
{
CString strpath;
strpath=dlg.GetPathName();
//MessageBox(strpath);
}
CStdioFile myfile;
if(myfile.Open(dlg.GetPathName(),CFile::modeRead))
{
CString str;
CString str1;
CString str2;
int s=0;
while(myfile.ReadString(str))
{

for(int i=0;i<str.GetLength();i++)
{
if(int(str.GetAt(i))>=65&&int(str.GetAt(i))<=122)
str2+=str.GetAt(i);
else
{
if(str2!="")
{
m_list.InsertString(-1,str2);
str2="";
}
}

}
m_edit+=str+"\r\n";
UpdateData(FALSE);

}

}


}
对话框中有个LISTBOX(m_list)有个EDIT(m_edit),为什么每一行的文本都显示在EDIT中,
而LISTBOX中只能显示一行文本中的单词?
...全文
264 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
JFDream_15 2006-08-31
  • 打赏
  • 举报
回复
if(int(str.GetAt(i))>=65&&int(str.GetAt(i))<=122)
str2+=str.GetAt(i);
else
{
if(str2!="")
{
m_list.InsertString(-1,str2);
str2="";
}
}
//在程序中加上以下的这个判断试,应该就可以实现LZ的功能了
if (i == str.GetLength() - 1)
{
m_list.InsertString(-1,str2);
str2="";
}
JFDream_15 2006-08-31
  • 打赏
  • 举报
回复
if(int(str.GetAt(i))>=65&&int(str.GetAt(i))<=122)
str2+=str.GetAt(i);
else
{
if(str2!="")
{
m_list.InsertString(-1,str2);
str2="";
}
}
if (i == str.GetLength() - 1)
{
m_list.InsertString(-1,str2);
str2="";
}
zhaohan8 2006-08-31
  • 打赏
  • 举报
回复
调试过了,果然有值,没有INSERT
zhaohan7 2006-08-31
  • 打赏
  • 举报
回复
这个只是执行一次FOR循环,INSERT最后一个单词就能执行多次FOR循环了吗?
一条晚起的虫 2006-08-31
  • 打赏
  • 举报
回复
程序逻辑错误,没有考虑一行中最后一个单词(有值,但是循环结束),所以不会执行InsertString;
}
if(str2!="")
{
m_list3.InsertString(-1,str2);
str2="";
}
m_edit+=str+"\r\n"; //for循环结束后,insert一次
zhaohan7 2006-08-31
  • 打赏
  • 举报
回复
比如:
DFFDSAF AFDSAF ADF A DAFDSA DD AA AD GGE GE
FD
BBB
WFEFGW
zhaohan7 2006-08-31
  • 打赏
  • 举报
回复
文本里没有中文
zhaohan7 2006-08-31
  • 打赏
  • 举报
回复
if(int(str.GetAt(i))>=65&&int(str.GetAt(i))<=122)不可能始终成立
其实就是通过WHILE循环读出文本,循环一次读一行,放在str中,然后把str中每个字符读出来,放在str2中组成一个字符串,如果遇到特殊字符就把str2放进LIST中,可是这个程序在FOR循环的时候只读了第一行文本,只能把第一行文本中的单词放在LIST中,不知道是为什么
一条晚起的虫 2006-08-31
  • 打赏
  • 举报
回复
65 - 122 正好是 A - z,其他的符号,中文等都不在这个范围内
zhihong123 2006-08-31
  • 打赏
  • 举报
回复
如果是逻辑错误的话,自己调试下先,或许收获大点哦,呵呵
一条晚起的虫 2006-08-31
  • 打赏
  • 举报
回复
if(int(str.GetAt(i))>=65&&int(str.GetAt(i))<=122) //如果这个条件始终成立,根本不会执行到m_list.InsertString(), 是不是这个原因?
show 2006-08-31
  • 打赏
  • 举报
回复
m_list.InsertString(0,str2);

m_list.Add...(...);
zhaohan7 2006-08-31
  • 打赏
  • 举报
回复
放到外边没有用啊,FOR循环里面的str的值始终不变,不知道怎么搞的
superarhow 2006-08-31
  • 打赏
  • 举报
回复
把UpdateData(FALSE);放在循环外面看看呢?

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧