Я вернулся с другим, вероятно, вопросом. хР
Поэтому у меня есть это на данный момент.
#include <iostream>
using namespace std;
int main()
{
string input;
int man;
cout<<"Choose your Character- 1.Sven or 2.Macy: ";
cin>>input;
cin.ignore();
if ( input == "Sven" ){
cout<<"Welcome to CRPG, my good Sir!";
return 0;
cin>>"Sven starts his journey at the Forest of Despair. At the beginning of the path, a fork in the road sits in his way. Which path shall you take? L or R?";
}
else if ( input == "Macy" ){
cout<<"Girls cant fight, go back: ";
}
}
Да, я видел и читал другие сообщения об этой же проблеме, но никто не обращался ко мне. Так каким образом я мог бы это исправить?
Вы должны включить заголовок <string>
#include <string>
Этот заголовок содержит объявление operator >>
для объектов типа std::string
Также в этом утверждении
cin>>"Sven starts his journey at the Forest of Despair. At the beginning of the path, a fork in the road sits in his way. Which path shall you take? L or R?";
у вас есть опечатка. Должен быть cout <<
вместо cin >>
Основная проблема заключается в этой строке кода:
cin>>"Sven starts his journey at the Forest of Despair. <blah blah blah>";
Конечно, cin
не предлагает operator>>
поэтому код не скомпилируется с сообщением об ошибке. Но предположим, что на секунду это обеспечило такой оператор. Что означал бы ваш код? Вы пытаетесь прочитать что-то в строковый литерал (то есть что-то типа const char[N]
где N
- длина строки), которая является постоянной и не может быть изменена.
Поскольку вы хотите что-то написать на выходе (вместо того, чтобы читать что-то из ввода), вы должны использовать cout <<
вместо этого.
Также обратите внимание, что у вас есть return 0
которое предотвратит выполнение оператора, так как выполнение main
остановится после того, как этот оператор встретится.
Обновление: в комментариях обратите внимание, что вы не #include <string>
несмотря на то, что вы используете std::string
в своей программе. Хотя вы можете избежать этого, вы не должны полагаться на это поведение, и вы должны явно включать то, что вы используете. Несоблюдение этого может, как предложили Slava и MooingDuck, привести к ошибкам, аналогичным тому, что вы сообщили.
string input
.
В этом случае вы правильно использовали cin:
cin>>input;
cin.ignore();
Почему бы не сделать то же самое здесь?
string direction
cout << "Sven starts his journey at the Forest of Despair. At the beginning of the path, a fork in the road sits in his way. Which path shall you take? L or R?";
cin >> direction
//do whatever you want to do with direction
РЕДАКТИРОВАТЬ:
Поэтому у вас есть
return 0;
Это не позволяет программе ничего делать после этой строки, потому что вы возвращаетесь сюда.
return 0
вещь. Мои глаза сканировали мимо , что и к cin
ниже!
#include <string>
если вы хотите использоватьstd::string
. Во-вторых, что означает чтение строкового литерала (мертвый код, но в любом случае неправильный)?