【问题标题】:Passing length 0 string ('0') to STL functions that expect char*将长度为 0 的字符串 ('0') 传递给需要 char* 的 STL 函数
【发布时间】:2013-01-08 00:01:30
【问题描述】:

同事(我真的不使用 char* :))做了一个错误,减少到这个:

testVar.append('\0'); //testVar is std::string

所以他基本上是这样解决的:

testVar.append("\0");

我的问题是为什么第一个不合法? 它不能被认为是0长度0终止的字符串吗? 我尝试进入 VS10 std lib 实现亲自查看,但我后悔了。 :)

【问题讨论】:

  • 重点是 '\0' 是一个 0 值的字符,对于指针的特殊值 0 也可以解释为空指针。所以 append('\0') 调用 append((const char*)0)

标签: c++ stl stdstring


【解决方案1】:

' 创建一个char 文字,它与字符串/char * 不同。有些语言将单个字符视为长度为 1 的字符串,但 C++ 将单个字符定义为原始数据类型,而字符串是字符数组。

【讨论】:

  • 此外,在第一个 '\0' 中,char 等于 0,可以被视为 const char * 上的空指针。
  • @m0nhawk:是的;直到你指出来,我才意识到这一点。
  • @m0nhawk 好点,它实际上被转换为 char* :( 现在很明显了。:) tnx,A 也很好。
猜你喜欢
  • 2019-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-30
  • 1970-01-01
  • 1970-01-01
  • 2012-07-15
  • 2018-12-24
相关资源
最近更新 更多