【问题标题】:Removing White Spaces in MFC C++在 MFC C++ 中删除空格
【发布时间】:2013-06-16 23:33:15
【问题描述】:

美好的一天。我目前正在使用 MFC C++(在 Visual Studio 2010 中)中的套接字执行服务器-客户端聊天程序。这是我的第一个 C++ 程序,因为我们在大学时从未被教过这种语言(耻辱)

无论如何,到目前为止,我一直做得很好。然后,我添加了字符串长度来计算发送了多少个字符。值得庆幸的是,由于搜索了互联网和论坛,我已经成功了。然后这是我的问题,代码计算了空格,我不需要。我读到了 .Trim() 但它不是我需要的。我也尝试过 .Replace() 但它不起作用。还有其他想法吗?这是我的代码。

//字符串长度 //m_Msg 是我的消息

CString strCount;
strCount = m_Msg;

//strCount = strCount.Replace(" " , ""); int Count = strCount.GetLength();

谢谢,感谢您提供任何可能有帮助的想法。

【问题讨论】:

  • 是的,我在大学里教过 FORTRAN-77 ;-)。如果您只对非空白字符的数量感兴趣,那么执行此操作的最快方法是计算字符串中的字符,忽略任何属于您的空白定义的内容。你不应该以任何方式改变字符串(除非,当然你想使用改变的字符串),因为这会降低性能。
  • 真正的问题是您为什么使用CString 而不是std::string。 (使用std::string,您可以访问std::count_ifstd::remove_if 等标准函数。)
  • 你很幸运。这给了我一个想法。需要重新搜索 (",) 谢谢,谢谢

标签: c++ visual-studio-2010 mfc removing-whitespace


【解决方案1】:

您可以使用int CString::Remove( TCHAR ch ) 它将您要删除的字符作为参数并返回删除的字符数。

strCount.Remove(' ');

应该做你想做的事。我也同意你应该使用 std::string 的评论。

【讨论】:

  • 再次感谢。我从来没有真正了解过 std::string,因为我说过这是我的第一个 C++ 程序,我真的不知道我在做什么。 :'(
  • CString 有一个更简单的接口 IMO,std::string 可能看起来很复杂,但是当你进入它时它并没有那么糟糕。我的建议是查看cplusplus.com/reference/string/string,它有大多数(全部?)std::strings 函数的文档和示例。
  • 没问题 =) 如果解决了问题,请将此答案设置为解决方案。