草庐IT

C++ Cout & Cin & 系统 "Ambiguous"

coder 2023-06-03 原文

我只是在 C++ 中编程,突然间所有的“cout”和“cin”都是错误和“模棱两可的”。包括系统。

我不知道为什么会这样。一切都很好,我在同一个程序中编写了大约 2 个小时,然后它就……发生了。

编辑

我仍然可以无错误地运行程序,但它们在文本中显示为错误,即红色涂鸦线。发生了什么?

我正在使用 Visual Studio 2013 IDE,无论它附带什么。

#include <iostream>
#include <ctime>
#include <string>
#include <Windows.h>
#include <cstdlib>
#include <stdlib.h>

using namespace std;

int main()
{

struct Gun
{
    string name;
    int damage;
    int cost;
    bool purchased;
    bool equipped;

} M4A1, FAMAS;

//WEAPONS INFO
M4A1.cost = 50;
M4A1.damage = 5;
M4A1.purchased = false;
M4A1.equipped = false;

FAMAS.cost = 300;
FAMAS.damage = 10;
FAMAS.purchased = false;
FAMAS.equipped = false;
//WEAPONS INFO

//-----PLAYER(BEGIN)-----

struct Player
{
    int health;
    string name;
    int money;
    int energy;

    string l_a;
    string r_a;
    string l_l;
    string r_l;

    string rank;

} Player;

//GAME PLAYER BEGIN

Player.l_a = "Normal";
Player.r_a = "Normal";
Player.l_l = "Normal";
Player.r_l = "Normal";

Player.health = 100;
Player.money = 100;
Player.energy = 100;

string plyrname;
string rank = "Private";

Player.name = plyrname;

//GAME PLAYER END

//-----PLAYER(END)-----

cout << "What is your name? ";
cin >> plyrname;

goto mmenu;


mmenu:

//-----MAIN MENU(BEGIN)-----
system("CLS");
if (Player.l_a == "Damaged")
{
    cout << "Your Left Arm is damaged! Sleep for a while to fix it!";
    Sleep(1600);
}
if (Player.r_a == "Damaged")
{
    cout << "Your Right Arm is damaged! Sleep for a while to fix it!";
    Sleep(1600);
}
if (Player.l_l == "Damaged")
{
    cout << "Your Left Leg is damaged! Sleep for a while to fix it!";
    Sleep(1600);
}
if (Player.r_l == "Damaged")
{
    cout << "Your Right Leg is damaged! Sleep for a while to fix it!";
    Sleep(1600);
}


if (Player.money >= 500 && Player.rank == "Private")
{
    system("CLS");
    cout << "You have been promoted to Private 2!";
    Player.rank = "Private 2";
    Sleep(1600);

}

if (Player.money >= 1000 && Player.rank == "Private 2")
{
    system("CLS");
    cout << "You have been promoted to Private First Class!";
    Player.rank = "Private First Class";
    Sleep(1600);
}


system("CLS");
cout << "Health: " << Player.health << ". Money: " << Player.money << " dollars." << "   Energy: " << Player.energy;
if (M4A1.equipped)
    cout << "\nGun: M4A1";
if (FAMAS.equipped)
    cout << "\nGun: FAMAS";

cout << "\n\nRank: " << Player.rank;
cout << "\n\n1) Go to Gunstore\n2) Sleep\n3) Fight\n\nAction: ";
int mmenuch1;
cin >> mmenuch1;

if (mmenuch1 == 1)
{
    goto gunstore;
}

if (mmenuch1 == 2)
{
    system("CLS");
    cout << "You sleep, restoring your energy.";
    Player.energy = 100;

    if (Player.l_a == "Damaged")
    {
        cout << "\n\nYour Left Arm was healed.";
        Player.l_a = "Normal";
    }
    if (Player.r_a == "Damaged")
    {
        cout << "\n\nYour Right Arm was healed.";
        Player.r_a = "Normal";
    }
    if (Player.l_l == "Damaged")
    {
        cout << "\n\nYour Left Leg was healed.";
        Player.l_l = "Normal";
    }
    if (Player.r_l == "Damaged")
    {
        cout << "Your Right Leg was healed.";
    }


    Sleep(1400);
    goto mmenu;
}

if (mmenuch1 == 3)
{
    system("CLS");
    goto fight;
}

//-----MAIN MENU(END)-----


fight:
srand(time(0));

system("CLS");

if (Player.r_a == "Damaged" || Player.r_l == "Damaged" || Player.l_a == "Damaged" || Player.l_l == "Damaged")
{
    cout << "You're injured, sleep to heal.";
    Sleep(1400);
    goto mmenu;
}

if (Player.energy < 40)
{
    cout << "You don't have enough energy to fight.";
    Sleep(1400);
    goto mmenu;
}

if (M4A1.equipped == false && FAMAS.equipped == false)
{
    cout << "You don't have a gun equipped.";
    Sleep(1400);
    goto gunstore;
}

if (M4A1.equipped == true && Player.energy > 40)
{

    int randnum1 = rand() % (M4A1.damage - 2 + 1) + 2;
    Player.money = Player.money + (randnum1 * 15);
    Player.energy = Player.energy - 40;

    int randnum3 = rand() % (10 - 1 + 1) + 1;
    if (randnum3 < 4)
    {

        int randnum4 = rand() % (13 - 1 + 1) + 1;

        if (randnum4 < 3)
        {
            Player.l_a = "Damaged";
        }
        if (randnum4 <= 6 && randnum4 >= 4)
        {
            Player.r_a = "Damaged";
        }
        if (randnum4 <= 9 && randnum4 >= 7)
        {
            Player.l_l = "Damaged";
        }
        if (randnum4 <= 13 && randnum4 >= 10)
        {
            Player.r_l = "Damaged";
        }



    }


    cout << "You fight, killing " << randnum1 << " enemies, making " << randnum1 * 15 << " dollars!";
    Sleep(1600);
    goto mmenu;





}




if (FAMAS.equipped == true && Player.energy > 40)
{
    int randnum2 = rand() % (FAMAS.damage - 4 + 1) + 4;
    Player.money = Player.money + (randnum2 * 15);
    Player.energy = Player.energy - 40;




    int randnum5 = rand() % (10 - 1 + 1) + 1;
    if (randnum5 < 4)
    {

        int randnum6 = rand() % (13 - 1 + 1) + 1;

        if (randnum6 < 3)
        {
            Player.l_a = "Damaged";
        }
        if (randnum6 <= 6 && randnum6 >= 4)
        {
            Player.r_a = "Damaged";
        }
        if (randnum6 <= 9 && randnum6 >= 7)
        {
            Player.l_l = "Damaged";
        }
        if (randnum6 <= 13 && randnum6 >= 10)
        {
            Player.r_l = "Damaged";
        }



    }



    cout << "You fight, killing " << randnum2 << " enemies, making " << randnum2 * 15 << " dollars!";
    Sleep(1600);
    goto mmenu;
}



//-----GUNSTORE(BEGIN)-----
gunstore:
system("CLS");
cout << "Welcome to the gunstore! You have " << Player.money << " dollars.";
cout << "\n\n1)M4A1 | Assault Rifle | $50\n2)FAMAS | Assault Rifle | $300\n\n3)Back\n\nAction: ";

int gschoice1;

cin >> gschoice1;

if (gschoice1 == 1)
{
    goto prchs_M4A1;
}
else if (gschoice1 == 2)
{
    goto prchs_FAMAS;
}
else if (gschoice1 == 3)
{
    goto mmenu;
}


prchs_M4A1:

system("CLS");

if (M4A1.purchased == true)
{
    cout << "You already purchased the M4A1. Would you like to equip it?\n\n1)Yes\n2)No\n\nAction: ";
    int gschoice6;
    cin >> gschoice6;

    if (gschoice6 == 1)
    {
        system("CLS");
        M4A1.equipped = true;
        FAMAS.equipped = false;
        goto mmenu;
    }
    else if (gschoice6 == 2)
    {
        goto gunstore;
    }


}


if (Player.money >= 0)
{
    system("CLS");
    cout << "Would you like to buy the M4A1?";
    cout << "\n\n1)Yes\n2)No\n\nAction: ";

    int gschoice2;
    cin >> gschoice2;

    if (gschoice2 == 1)
    {
        system("CLS");
        Player.money = Player.money - M4A1.cost;
        M4A1.purchased = true;
        cout << "You've purchased the M4A1. Would you like to equip it?\n\n1)Yes\n2)No\n\nAction: ";
        int gschoice3;
        cin >> gschoice3;



        if (gschoice3 == 1)
        {
            system("CLS");
            M4A1.equipped = true;
            FAMAS.equipped = false;

            cout << "You've equipped the M4A1";
            Sleep(1400);
            goto gunstore;
        }

        if (gschoice3 == 2)
        {
            system("CLS");
            M4A1.equipped = false;
            goto gunstore;
        }


    }

    if (gschoice2 == 2)
    {
        system("CLS");
        goto gunstore;
    }

}
else if (Player.money < 0)
{
    system("CLS");
    cout << "You don't have enough money.";
    Sleep(1400);
    goto gunstore;
}

prchs_FAMAS:

if (FAMAS.purchased == true)
{
    cout << "You already purchased the FAMAS. Would you like to equip it?\n\n1)Yes\n2)No\n\nAction: ";
    int gschoice7;
    cin >> gschoice7;

    if (gschoice7 == 1)
    {
        system("CLS");
        FAMAS.equipped = true;
        M4A1.equipped = false;
        goto mmenu;
    }
    else if (gschoice7 == 2)
    {
        goto gunstore;
    }
}



    if (Player.money >= 100)
    {
        system("CLS");
        cout << "Would you like to buy the FAMAS?";
        cout << "\n\n1)Yes\n2)No\n\nAction: ";

        int gschoice4;
        cin >> gschoice4;

        if (gschoice4 == 1)
        {
            system("CLS");
            Player.money = Player.money - FAMAS.cost;
            FAMAS.purchased = true;
            cout << "You've purchased the FAMAS. Would you like to equip it?\n\n1)Yes\n2)No\n\nAction: ";
            int gschoice5;
            cin >> gschoice5;

            if (gschoice5 == 1)
            {
                system("CLS");
                FAMAS.equipped = true;
                M4A1.equipped = false;
                cout << "You've equipped the FAMAS";
                Sleep(1400);
                goto gunstore;
            }

            if (gschoice5 == 2)
            {
                system("CLS");
                FAMAS.equipped = false;
                goto gunstore;
            }


        }

        if (gschoice4 == 2)
        {
            system("CLS");
            goto gunstore;
        }

    }
    else if (Player.money < 100)
    {
        system("CLS");
        cout << "You don't have enough money.";
        Sleep(1400);
        goto gunstore;
    }
    //-----GUNSTORE-----




}

最佳答案

这种事情不会自己神奇地发生。你改变了一些东西!在工业中,我们使用版本控制来创建定期保存点,因此当出现问题时,我们可以追溯导致该问题的具体更改。

由于您在这里没有这样做,我们只能猜测。在 Visual Studio 中,Intellisense(为您提供自动完成下拉菜单和那些弯曲的红线的技术)独立于引擎盖下的实际 C++ 编译器工作,有时会出现一些错误。

在这种情况下,我会问你为什么要同时包含 cstdlibstdlib.h ;你应该只使用其中一个,我推荐前者。它们基本上是相同的头,一个C头,但是cstdlib将它们放入命名空间 std为了“C++-ise”它们。从理论上讲,包括两者都不会冲突,但是,这就是我们正在谈论的微软。他们的 C++ 工具链有时会留下一些不足之处。任何时候 Intellisense 不同意编译器都必须被视为错误,无论您如何看待它!

不管怎样,你使用 using namespace std (我以后会推荐反对)意味着std::system来自 cstdlib现在与 system 冲突来自 stdlib.h .我无法解释 std::cout 发生了什么和 std::cin .

尝试删除 #include <stdlib.h>看看会发生什么。

如果您的程序构建成功,那么您不必为此担心太多,但我可以想象当您在 IDE 中工作时误报很烦人。

关于C++ Cout & Cin & 系统 "Ambiguous",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25538525/

有关C++ Cout & Cin & 系统 "Ambiguous"的更多相关文章

  1. ruby-on-rails - rails : "missing partial" when calling 'render' in RSpec test - 2

    我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou

  2. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  3. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  4. ruby-on-rails - 如何从 format.xml 中删除 <hash></hash> - 2

    我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为

  5. ruby - 检查 "command"的输出应该包含 NilClass 的意外崩溃 - 2

    为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar

  6. ruby-on-rails - Rails 3.2.1 中 ActionMailer 中的未定义方法 'default_content_type=' - 2

    我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer

  7. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

  8. ruby - 在 jRuby 中使用 'fork' 生成进程的替代方案? - 2

    在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',

  9. ruby - 主要 :Object when running build from sublime 的未定义方法 `require_relative' - 2

    我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby​​1.9+ 关于ruby-主要:Objectwhenrun

  10. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

    我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

随机推荐