【问题标题】:Why can't I successfully run the following hangman game console code? I could successfully run the same code in devc++为什么我无法成功运行以下hangman 游戏机代码?我可以在 devc++ 中成功运行相同的代码
【发布时间】:2020-05-21 09:23:12
【问题描述】:

error message.png

这些是错误

1."message": "无法打开源文件\"iostream\"",

2.#include 检测到错误。请更新您的 includePath。为此禁用了 Squiggles 翻译单元(C:\Users\USER\first.cpp)。

3.无法打开源文件“cstdlib”

4.无法打开源文件“ctime”

5.无法打开源文件“字符串”

这是我的代码

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

const int MAX_TRIES=5;

int letterFill (char, string, string&);

int main ()
{
    string name;
    char letter;
    int num_of_wrong_guesses=0;
    string word;
    string words[] =
    {
        "india",
        "pakistan",
        "nepal",
        "malaysia",
        "philippines",
        "australia",
        "iran",
        "ethiopia",
        "oman",
        "indonesia"
    };

    //choose and copy a word from array of words randomly
    srand(time(NULL));
    int n=rand()% 10;
    word=words[n];

    // Initialize the secret word with the * character.
    string unknown(word.length(),'*');

    // welcome the user
    cout << "\n\nWelcome to hangman...Guess a country Name";
    cout << "\n\nEach letter is represented by a star.";
    cout << "\n\nYou have to type only one letter in one try";
    cout << "\n\nYou have " << MAX_TRIES << " tries to try and guess the word.";
    cout << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";

    // Loop until the guesses are used up
    while (num_of_wrong_guesses < MAX_TRIES)
    {
        cout << "\n\n" << unknown;
        cout << "\n\nGuess a letter: ";
        cin >> letter;
        // Fill secret word with letter if the guess is correct,
        // otherwise increment the number of wrong guesses.
        if (letterFill(letter, word, unknown)==0)
        {
            cout << endl << "Whoops! That letter isn't in there!" << endl;
            num_of_wrong_guesses++;
        }
        else
        {
            cout << endl << "You found a letter! Isn't that exciting!" << endl;
        }
        // Tell user how many guesses has left.
        cout << "You have " << MAX_TRIES - num_of_wrong_guesses;
        cout << " guesses left." << endl;
        // Check if user guessed the word.
        if (word==unknown)
        {
            cout << word << endl;
            cout << "Yeah! You got it!";
            break;
        }

    }
    if(num_of_wrong_guesses == MAX_TRIES)
    {
        cout << "\nSorry, you lose...you've been hanged." << endl;
        cout << "The word was : " << word << endl;
    }
    cin.ignore();
    cin.get();
    return 0;
}

/* Take a one character guess and the secret word, and fill in the
 unfinished guessword. Returns number of characters matched.
 Also, returns zero if the character is already guessed. */

int letterFill (char guess, string secretword, string &guessword)
{
    int i;
    int matches=0;
    int len=secretword.length();
    for (i = 0; i< len; i++)
    {
        // Did we already match this letter in a previous guess?
        if (guess == guessword[i])
            return 0;

        // Is the guess in the secret word?
        if (guess == secretword[i])
        {
            guessword[i] = guess;
            matches++;
        }
    }
    return matches;
}

【问题讨论】:

  • 您是否在 C++ 模式下编译(而不是在 C 模式下)。否则您的安装似乎损坏或不完整。
  • 你试过编译吗?也许只是智能感知没有找到包含。你可以试试update your include path
  • 然后使用devC++

标签: c++ visual-studio-code console-application


【解决方案1】:

您的编译器找不到您包含的头文件,但由于您只是包含标准库中的头文件,因此您的安装或环境很可能有问题。可能是您只是将 C 编译器与 C++ 编译器(例如 clang 和 clang++)混淆了,或者您使用的编译器实际上并未附带标准库,例如 clang在 Windows 上,它使用 MSVC 的标准库。

您可以通过尝试包含 C 标准库中的标头(例如 "stdlib.h")来解决此问题,并查看编译器是否可以找到它。如果可以,那么您只是使用了错误的编译器,如果不能,那么您要么缺少标准库,要么您的环境设置不正确,您的编译器找不到它,但不知道你使用的是什么编译器,你是如何调用它的,我真的无法给出详细的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2015-10-14
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多