经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C++ » 查看文章
错误C2137:c中的字符常量为空++
来源:cnblogs  作者:特务小强  时间:2021/6/21 10:12:56  对本文有异议

代码如下:

  1. void SomeClass::SomeFunctionToCorrectName(CString &strName)
  2. {
  3. // Only alphabets (Aa-Zz), numbers(0-9), "_" (underscore) and "-" (hyphen) are allowed.
  4. for(int nIndex = 0; nIndex < strName.GetLength(); nIndex++)
  5. {
  6. TCHAR currentChar = strName.GetAt(nIndex);
  7. if((currentChar >= _T('a') && currentChar <= _T('z')) ||
  8. (currentChar >= _T('A') && currentChar <= _T('Z')) ||
  9. (currentChar >= _T('0') && currentChar <= _T('9')) ||
  10. currentChar == _T('-') || currentChar == _T('_'))
  11. {
  12. continue;
  13. }
  14. strName.Replace(currentChar,_T(''));
  15. }
  16. }

此方法删除strName中的任何额外内容,并且只允许使用(Aa-Zz)、numbers(0-9)、{(下划线)和“-”(连字符)。国际单项体育联合会要检查那些允许的条件。如果它不在允许的条件下,它将删除它。

  1. For Eg desired i/p :"Hel*lo*World" and desired o/p : "HelloWorld"

但下面给出的错误如下:

  1. error C2137: empty character constant
  2. I can fix this error by using any of the three methods:
  3. 1. using '\0'
  4. 2. using ' ' (space in between ' ')
  5. 3. using ""[0]

但这会在更换时引入空间。

  1. Input :Hel*lo*World
  2. Output :Hel lo World
  3. Desired Output :HelloWorld

有人能告诉我怎样才能得到想要的结果吗?

如果要删除特定字符,则Replace不是正确的方法。正如您所注意到的,没有任何合理的方法可以代替这个角色。

相反,您可以像这样使用Remove

  1. strName.Remove(currentChar);

    refer to:https://www.5axxw.com/questions/content/ksso5b

原文链接:http://www.cnblogs.com/tewuapple/p/14892161.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号