【问题标题】:put a string in condition (c++)将字符串置于条件中(c ++)
【发布时间】:2012-04-27 04:13:12
【问题描述】:

为什么我会收到此行的错误消息?

void Student::SetName(const string newName)
{
 if(newName!=NULL) //could not deduce template argument for 'const T1 *' from 'int'
{
     .....
}

有什么想法吗?

【问题讨论】:

  • p.s 也试过 if(newName) 得到这个错误:
  • 'const std::string' 类型的条件表达式是非法的
  • 如果你在寻找一个空字符串,试试if (newName == ""),或者Bo的if (!newName.empty()) 虽然我知道没有真正的字符串验证比较。
  • 字符串不能为NULL,但可以是empty()
  • 所以如果我想放一个空字符串,我会做 newName=newName.empty(); ?

标签: c++ string conditional-statements


【解决方案1】:

这不是 C#,C++ 中的字符串不是可为空的类型。只有指针实际上可以为 NULL,除非您使用指针,否则您不能定义一个变量而不在 C++ 中为其分配一些基本值。

您的代码应该如下所示:

if(!newName.empty())
    ....

【讨论】:

  • 所以如果我想放一个空字符串,我会做 newName=newName.empty(); ?
  • @user1334761 newName=="" 或`newName.empty()。
  • .empty 是一个布尔函数。它不返回字符串,它返回是否为空。它也不会修改字符串的内容 (@juanchopanza)
  • 我知道empty 是什么,但我不确定“放置一个空字符串”是什么意思。所以我猜测(可能是错误的)OP 想知道如何检查字符串是否为空。
  • 这是有道理的。我有点困惑,因为我确定你知道这意味着什么(通过你的业力)。
【解决方案2】:

可能的解决方案:

if(!newName.empty())

if(newName.size()) // If size = 0 so no caracters in string

if(newName == "") // Empty string

【讨论】:

    猜你喜欢
    • 2014-01-19
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 2018-08-05
    • 1970-01-01
    • 2021-12-06
    相关资源
    最近更新 更多