c++ - 字符串未在范围内定义。不确定为什么

标签 c++ scope

所以我在空闲时间开始学习C++,并且正在尝试构建一个简单的石头剪刀布游戏。当我尝试运行此程序时,我收到 x、y 和 z 的“未在此范围内定义错误”。

#include <iostream>
#include <stdlib.h>
#include <string>


int main(){

  string x,y,z;

  srand (time(NULL));
  int computer = rand() % 3 + 1;
  int user = 0;

  std::cout << "====================\n";
  std::cout << "rock paper scissors!\n";
  std::cout << "====================\n";

  std::cout << "1) ✊\n";
  std::cout << "2) ✋\n";
  std::cout << "3) ✌️\n";

  std::cout << "shoot! ";

  std::cin >> user;

  if(user== 1){


    x = (computer == 3) ? "You win!" : "You lose.";
    std::cout<<x;

  }else if(user==2){


    y = (computer == 1) ? "You win!" : "You lose.";
    std::cout<<y;

  }else{

    if(user == 3){

      z = (computer == 2) ? "You win!" : "You lose.";
      std::cout<<z;

    }

  }


}

问题出在哪里?

最佳答案

您有string x,y,z;但是string属于命名空间std .

您的cout有效,因为您输入了 std::cout在你的代码中。对这些字符串执行相同的操作,因为您没有 using namespace std;在您的代码中。

解决方案:

更改string x,y,z;std::string x,y,z;

旁白:

您还缺少 header <ctime>对于 srand(time(NULL));

关于c++ - 字符串未在范围内定义。不确定为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61084691/

相关文章:

c++ - 如何像内置类型一样提升两个模板类型进行算术运算呢?

qt - 在其他其他QML文件的QML中声明全局属性

c++ - 返回局部变量

c++ - 无法解析符号 otl_connect(不包括 otl_connect 类)

c++ - 为什么 C++ 中实现类的语法是这样的?

具有文件范围的 C 结构体

ruby-on-rails - Rails/Kaminari - 如何订购分页数组?

angular - 有没有办法从 Chartjs 的点击功能调用组件的功能

c++ - 如何使用 boost 可升级互斥量的示例

c++ - 使 LLVM 无法包含 $(LLVM_SRC_ROOT)/Makefile.rules