【问题标题】:C++ Comparing string to 0 using == operator? [duplicate]C ++使用==运算符将字符串与0进行比较? [复制]
【发布时间】:2014-06-12 07:31:17
【问题描述】:
#include<iostream>
#include<cstdlib>
#include<string>
using namespace std;
int main()
{
  string A1;
  cin>>A1;
  if(A1==0)
   {
     cout<<"Success!";
   }
  else
   {
     cout<<"Failure!";
   }
system("PAUSE");
return 0;
}

C++ 初学者。我正在尝试使用 == 运算符比较键入为 0 的字符串的值。以上是我的代码示例。如何以最简单的方式解决这个问题?谢谢。

【问题讨论】:

  • 可能你的意思是“0”。
  • 不确定您的意图...比较"0"或比较0
  • 有什么问题?是否要检查是否输入了字符串"0"?还是检查NULL?
  • 应该是#include &lt;string&gt;,而不是#include &lt;string.h&gt;
  • 例如用户输入值 0,0 代表 A1,它与 (A1==0) 进行比较并进入代码的 if {} 部分?

标签: c++ string


【解决方案1】:

考虑写if(A1 == "0")。 C++ std::string重载 == 运算符以允许这样做。

要检查字符串是否为空,请写入if (A1.empty())if (!A1.size())。我更喜欢第二种表述,因为它与其他 C++ 标准库对象一致。

我个人更喜欢在std::string 上使用compare 方法。这使您的代码对其他开发人员更具可读性(例如,Java 开发人员不愿意在这种情况下看到 ==)。

【讨论】:

  • 好的,它现在可以工作了,我的大部分程序都使用 int 数据类型,然后当我 cin>> 一个字母表时,程序被窃听并且我的循环失败,试图改变所有字符串的数据类型,不知道它是否会起作用,但谢谢:D
【解决方案2】:

C++ 是一种强类型语言。 0 本身就是一个数字。 "0" 是一个字符串文字。有些功能可以进行转换,例如。不过,std::stoi(字符串到整数)和std::to_string(很多东西要字符串)。

所以你在这里有很多可能的解决方案,以使类型相等。对于这种简化的情况,没有真正的最佳解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-01
    • 2015-11-15
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    相关资源
    最近更新 更多