【问题标题】:MFC compare stringMFC 比较字符串
【发布时间】:2012-07-03 14:45:01
【问题描述】:
sf.pTo = _T("D:\\Test2"); // it 's ok, you can move to folder Test2
CString m_to = EditCtrl_To.GetString();
sf.pTo = m_to;// EditCtrl_To is Edit Ctrol and it's value is "D:\\Test2" 

我无法移动到文件夹 Test2。 当我比较 _T("D:\Test2") & m_to 时,它不相等。为什么?

请帮助我,非常感谢!!!!

【问题讨论】:

  • 我认为没有愚蠢的问题,所以我提出了你的投票(现在是-1),但在你提出问题之前尝试做一些研究。

标签: c++ mfc


【解决方案1】:

基本 C++:

如果您分配一个字符串并使用反斜杠 \,您必须像 c:\\test2 一样对其进行转义。没有它,字符串中有一个制表符。

如果您从编辑控件中复制它,这就是区别所在,因为控件会自动执行此操作。

【讨论】:

  • 感谢您的回复,但它不起作用。我尝试如下运行,但总是不相等。请帮助我。 : CString t = _T("D:\\Test1\*.*"); if(t.CompareNoCase(t)){ MessageBoxA(NULL, "Equal", "Status", MB_OK); }else{ MessageBoxA(NULL, "不等于", "状态", MB_OK); }
  • 你必须在你的字符串中转义 every \ !而且我不确定 CompareNoCase 是否旨在与自身进行比较。
  • 刚刚查了一下:如果相等,CompareNoCase 返回 0,因此您必须更改 if 语句。并不是问 x==x 是否有意义。
  • 我试试:CString t1 = _T("D:\\Test1\*.*");CString t2 = _T("D:\\Test1\*.*"); if(t1.CompareNoCase(t2)){ MessageBoxA(NULL, "Equal", "Status", MB_OK); }else{ MessageBoxA(NULL, "不等于", "状态", MB_OK); } 但我仍然不相等。你能帮我解释一下吗?
  • 你读过我的cmets吗? 1. 它必须是 D:\\Test\\ . 2. 如果相等,CompareNoCase 返回 0。 0 被评估为假。 --> if(!t1.CompareNoCase(....
猜你喜欢
  • 1970-01-01
  • 2011-07-06
  • 1970-01-01
相关资源
最近更新 更多