Невозможно скомпилировать С++ с gcc

Мне нужно скомпилировать код в моей Linux-системе. Это простой код, и я не знаю, что не так:

У меня есть этот код, и я не могу его скомпилировать:

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

int main()
{
    string char1, char2, char3, char4, char5, char6;
    cout<<"Hello this is your standard True and False quiz"<<endl;
    cout<<"Please enter 'T' or 'F'"<<endl;
    cout<<"No#1 George Washington invented the toilet?"<<endl;
    cin>>char1;
    if ( char1 != "T" || "F")
    {
        cout<<"You entered an incorrect character please reenter True of False"<<endl;
        cin>>char1;
    }
    if ( char1 != "T" || "F")
    {
        cout<<"You entered an incorrect character please reenter True of False"<<endl;
        cin>>char1;
    }
    if ( char1 == "T" )
    {
        cout<<"You entered the incorrect answer. The answer is False"<<endl;
    }
    cout<<"No#2 The Squareroot of 3136 is 56?"<<endl;      
    cin>>char2;
    if ( char2 != "T" || "F")
    {
        cout<<"You entered an incorrect character please reenter True of False"<<endl;
        cin>>char2;
    }
    if ( char2 != "T" || "F")
    {
        cout<<"You entered an incorrect character please reenter True of False"<<endl;
        cin>>char2;
    }
    if ( char2 == "F" )
    {
        cout<<"You entered the incorrect answer. The answer is True"<<endl;
    }
    cout<<"No#3 
    system("PAUSE");
    return 0;
} 

Когда я пытаюсь скомпилировать его:

gcc file.c

Я получаю:

test.c:1: fatal error: iostream: No such file or directory
compilation terminated.

Насколько я знаю, у меня есть все библиотеки, что я делаю неправильно?

Ответ 1

Вы пытаетесь скомпилировать С++ с компилятором C. Вместо этого попробуйте g++ file.c.

Кроме того, рекомендуется называть ваш файл file.cpp вместо этого - именовать его .c не остановит его компиляцию, но он поможет в таких инструментах, как make. Кроме того, это поможет другим, кто позже встретит ваш исходный код (включая себя).

Изменить: у вашего кода есть другие проблемы, которые не связаны с вашим вопросом, но вы запустите их, как только получите его для компиляции:

  • Ваш ( char1 != "T" || "F") должен быть ( char1 != "T" && char1 != "F") (обратите внимание на && вместо ||)
  • Вы читаете другого персонажа, когда получаете плохой ввод, но поскольку ваш код не имеет циклов, программа выйдет, прежде чем что-либо сделает со следующим символом.
  • Как указывает Дэвид Шварц, стоит удалить system("PAUSE")

Это довольно распространенные ошибки для новичков на C (приветствую! Я бы рекомендовал начать с некоторых учебников или вводных книг. Вот отличный список книг и учебников C).

Если вы запустите все, что не можете решить самостоятельно, не стесняйтесь открывать другой вопрос.

Ответ 2

Это код С++, а не C, и должен быть скомпилирован соответствующим образом. (Он также имеет множество логических ошибок, но об этом мы можем беспокоиться позже.)

Ответ 3

У вас есть код на С++:

#include <iostream>
#include <string>
using namespace std;
/* ... */

Но они пытаются скомпилировать его, как если бы это был C:

gcc file.c

С++ не является C, и вы не должны относиться к нему так, как если бы он был.

Попробуйте переименовать файл в file.cpp и используйте g++ вместо gcc:

g++ file.cpp