【问题标题】:How to properly handle const char* in c++如何在 C++ 中正确处理 const char*
【发布时间】:2012-11-14 09:04:55
【问题描述】:
bool check(const char* pass); 
  1. const 是否意味着我不能在函数内部修改 char*?

  2. char* c 是否有类似 contains(char c) 之类的函数来检查 char 是否在 char* 中?

  3. 如何获取 char* 中的第 4 个字符?

  4. 是否有任何函数可以给出该 char* 的长度。除了检查'\0'在哪里?

【问题讨论】:

  • Const 保护他的左侧,除非他的左侧没有任何东西,然后才保护他的右侧
  • A char* 不“包含”字符。它“内部”没有字符串,也没有长度。它指向一个字符,该字符可能是也可能不是以 nul 结尾的字符串的第一个字符。以 nul 结尾的字符串包含字符并具有长度。
  • 回答 4 是一个大胖子 NO。这是您应该使用std:string 而不是char* 的众多原因之一。您可以继续让自己的生活变得困难,也可以听取经验丰富的程序员的建议。如果您在使用std::string 时遇到问题,请询问如何正确使用它,最终还是值得的。

标签: c++ char constants


【解决方案1】:

改用std::string

  1. 不,这意味着你不能修改chars。

  2. char* 是一个指针,它没有任何功能。你可以查一下strchr

  3. pass[3]

  4. strlen,但它会在内部检查'\0'

【讨论】:

  • 广告2。我在询问任何可以检查 char* 类型对象是否包含某些字符的静态或非静态函数
  • "您可以查找 strstr,但它不需要单个字符作为参数" -- 或查找 strchr,它确实需要单个字符(它将它作为int 而不是 char)。
  • @SteveJessop 不知道它的存在。
  • @Luchian:我们会让你成为 C 程序员 ;-) 如果你喜欢 strchr,那么 strrchr 会让你大吃一惊(尤其是当你第一次打错一个时)
猜你喜欢
  • 2019-09-10
  • 1970-01-01
  • 1970-01-01
  • 2011-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-31
  • 1970-01-01
相关资源
最近更新 更多