C++ 中的字符串与 IF 语句的比较?

APixel 视觉效果

我对 C++ 很陌生,大约 30 分钟前才开始使用在线课程学习。我有点困惑为什么这个字符串比较在基本的数学脚本中不起作用:

#include <iostream>
#include <string>
using namespace std;

int main() {
  int one, two, answer;
  char *oper;

  cout << "Add two numbers\n\nEnter your first number" << endl;
  cin >> one;
  cout << "Choose an operator: +  -  *  /  %%" << endl;
  cin >> oper;

  cout << "Enter your second number" << endl;
  cin >> two;

  if (oper == "+") {
    answer = one + two;
  }
  else if (oper == "-") {
    answer = one - two;
  }
  else if (oper == "*") {
    answer = one * two;
  }
  else if (oper == "/") {
    answer = one / two;
  }
  else if (oper == "%%") {
    answer = one % two;
  }

  cout << one << " " << oper << " " << two << " = " << answer << endl;

  return 0;
}

oneoper、 和的值分别two1"+"1,但最终会1 + 1 = 4201435被打印出来。没有任何if/else if语句正在执行。这是什么原因造成的?

N00byEdge

您正在比较char *使用operator==. 要么让operstd::string代替

std::string oper

要使用此处列出的字符串比较:http : //en.cppreference.com/w/cpp/string/basic_string/operator_cmp

或者,如果您需要使用 achar *进行某些限制,请使用strcmp

if (!strcmp(oper, "+")) {
// ...

您还需要将操作数变量指向某个缓冲区,以便将流读入。这有点复杂,我只是建议将 的类型更改operstd::string

您拥有的代码的问题在于它正在比较指向 char 数组的指针。您从输入方法中得到的将是来自输入流的新字符串,并且永远不会与程序中的只读字符串具有相同的地址。

因此,由于没有任何条件是true,因此尚未分配 ans 。所以输出它解释了一个未定义的行为

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在if语句中的c ++字符串比较

来自分类Dev

C ++ if语句比较字符串不起作用

来自分类Dev

C strcmp中的字符串比较

来自分类Dev

字符串与C ++的比较

来自分类Dev

比较字符串,C ++

来自分类Dev

比较C中的两个字符串(字符串指针)

来自分类Dev

将单个字符串与C中的字符串数组进行比较

来自分类Dev

一维字符串数组与C中的二维字符串数组的比较

来自分类Dev

如何比较子字符串和解析C字符串中的数字

来自分类Dev

在Linqpad c#语句中,如何比较字符串是否大于(版本> 4.0.38000)

来自分类Dev

比较字符串到c中的多个数组

来自分类Dev

字符串比较在C中无法正常工作

来自分类Dev

比较C#中的字符串和对象

来自分类Dev

ASP.net(C#)中的字符串比较

来自分类Dev

C ++中字母和字符串的比较

来自分类Dev

使用strcmp比较C中的字符串

来自分类Dev

字符串类中的指针与整数之间的比较-C ++

来自分类Dev

ASP.net(C#)中的字符串比较

来自分类Dev

字符串中的C ++元音,禁止比较

来自分类Dev

比较字符串到c中的多个数组

来自分类Dev

是否可以比较C中相同变量的字符串?

来自分类Dev

在C中字符串比较以获取密码

来自分类Dev

C中的字符串比较会给出分段错误

来自分类Dev

比较C#中的2个时间字符串

来自分类Dev

C 中的字符串与运算符的比较

来自分类Dev

尝试在C ++中的if语句中定义字符串

来自分类Dev

小于(<)float与c中if语句的比较

来自分类Dev

小于(<)float与c中if语句的比较

来自分类Dev

if语句做什么?(字符串比较)