#c #string #cout #cin
#c #строка #cout #cin
Вопрос:
Я не могу найти ошибку в этом фрагменте кода, может кто-нибудь, пожалуйста, разъяснить мне? Я запустил отладку, но ошибки непонятны..
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
string name;
cout << "Input your name please?" << endl;
cin >> name;
if
{
(name == "Bart Simpson")
cout << "You have been very naughty" << endl;
}
return 0;
}
Комментарии:
1. Это ваш реальный код, или вы допустили ошибку при публикации?
2. В будущем, на самом деле, публикуйте свои ошибки, не просто упоминайте, что у вас есть некоторые.
Ответ №1:
Проблемы:
- У вас есть некоторые недостающие
#include
s, которые, вероятно, вызвали ваши первоначальные ошибки компилятора. - У вас простая синтаксическая ошибка в вашем
if
заявлении. - Использование оператора извлечения потока никогда не выдаст строку с пробелом внутри нее.
Следующее должно работать так, как вы ожидаете:
#include "stdafx.h"
#include <iostream>
#include <ostream>
#include <string>
using namespace std;
int main()
{
cout << "Input your name please?" << endl;
string name;
getline(cin, name);
if (name == "Bart Simpson")
{
cout << "You have been very naughty" << endl;
}
return 0;
}
(Вам нужно включить string
для std::string
и std::getline
, и ostream
для std::endl
.)
Комментарии:
1. За исключением того, что
name
никогда не может бытьBart Simpson
2. @JohnDibling почему имя никогда не может быть Барт Симпсон? (Я попробовал это, и действительно, я получил ошибку, но когда я попробовал Bart, это сработало)
3. @Sinner : Оператор извлечения потока (
operator>>
в данном контексте) останавливает извлечение, как только встречает пробел или EOF, поэтому вы не можете использовать его для извлечения строки с пробелом внутри. Используйтеstd::getline
вместо этого.
Ответ №2:
Я предполагаю, что скобка в неправильном месте — это просто проблема при вставке кода
если (имя == «Барт Симпсон»)
name
никогда не будет равно "Bart Simpson"
, поскольку извлечение string
останавливается, когда встречается пробел; так что это было бы только "Bart"
. Возможно, вы хотите использовать getline()
вместо этого?
Ответ №3:
Должно быть
if (name == "Bart Simpson")
{
cout << "You have been very naughty" << endl;
}
И вам нужно включить <string>