Некоторое руководство, пожалуйста,

У меня есть этот код, который является в основном я пытающийся изучить C++, и я не могу выяснить, почему я продолжаю получать эти две ошибки

ошибка: запрос об участнике 'длина' в 'cInputChar', который имеет нетип класса 'случайная работа [0]'

и

ошибка: недействительное преобразование от 'случайной работы*', чтобы 'обуглиться'

Я думаю, что это имеет некоторое отношение к способу, которым я объявляю переменную случайной работы cInputChar . Проблема определенно связана с getChar функция.

Мой код ниже:

int getInteger(int& nSeries);
char getChar(char& cSeriesDecision, int nSeries);

int main()
{
int nSeries = 0;
char cSeriesDecision = {0};

getInteger(nSeries);

getChar(cSeriesDecision, nSeries);

return 0;
}

//The function below attempts to get an integer variable without using the '>>'    operator.
int getInteger(int& nSeries)
{

//The code below converts the entry from a string to an integer value.

string sEntry;
stringstream ssEntryStream;

 while (true)
 {
  cout << "Please enter a valid series number: ";
   getline(cin, sEntry);
   stringstream ssEntryStream(sEntry);

   //This ensures that the input string can be converted to a number, и that the series number is between 1 и 3.
   if(ssEntryStream >> nSeries && nSeries < 4 && nSeries > 0)
   {
       break;
   }
   cout << "Invalid series number, please try again." << endl;
 }
 return nSeries;
 }

 //This function tries to get a char from the user without using the '>>' operator.
 char getChar(char& cSeriesDecision, int nSeries)
 {
 char cInputChar[0];

 while (true)
 {
   cout << "You entered series number " << nSeries << "/nIs this correct? y/n: ";
   cin.getline(cInputChar, 1);

   if (cInputChar.length() == 1)
   {
     cSeriesDecision = cInputChar;
     break;
   }
  cout << "/nPlease enter a valid decision./n";
}

return cSeriesDecision;
}
5
добавлено отредактировано
Просмотры: 2
nl ja de
Пожалуйста, зафиксируйте свой титул вопроса так, чтобы он описал вопрос о программировании.
добавлено автор Lightness Races in Orbit, источник
Вы сделали случайную работу множество размера 0 , и затем вы пытались getline в него, и затем вы пытались сделать .length() на нем. Ни одна из этих вещей не возможна. Какую книгу вы используете? И который стандартное справочное руководство по библиотеке?
добавлено автор Lightness Races in Orbit, источник
С тех пор you' ре сам изучение, попытайтесь , знают , не думают , как что-то, даже если вы don' t знают, как зафиксировать изолированный элемент, можно все еще изолировать его..., например, минимизировать код к минимальному, должен был воспроизвести ошибку!
добавлено автор Grant Thomas, источник

1 ответы

 char cInputChar[0];

Вам действительно нужно множество размера 0 ? У вас не может быть множества размера 0 в C++. Это просто не законно.

Вам нужно что-то как:

#define MAX_SIZE 256

char cInputChar[MAX_SIZE];

Просто лучше просто использовать станд.:: последовательность вместо множества характера c-стиля.


Из обсуждения в комментариях:

@Inafune: Пожалуйста, возьмите хорошая книга.You не учат языка программирования, добавляя и удаляя синтаксис только, чтобы получить собранный код. Никогда не пишите даже единственную линию кода, не понимая цели позади него.

2
добавлено
@Inafune: Походит на вас don' t знают, почему вы написали его; you' ре просто беспорядочно добавляющий и удаляющий синтаксис. Это не хороший способ решить проблемы...
добавлено автор Lightness Races in Orbit, источник
@Inafune: Вам нужен чат (и книга). ТАК Вопросы и ответы не соответствующее место для повторяющегося обучения.
добавлено автор Lightness Races in Orbit, источник
@Inafune: Мы ответим на интересные вопросы, но этот isn' t "бесплатная беседа помощи" - вы, как обычно ожидают, выучите язык you' ре, спрашивающее о. Мы can' t делают это для вас. Может не быть похожим на него вам теперь, но мы являемся помощью вам самым лучшим способом.
добавлено автор Lightness Races in Orbit, источник
@Inafune: Хорошо думайте о нем этот путь - ваш код doesn' t знают, сколько времени линия будет, поэтому как можно вместить целую линию в сингл случайная работа ?
добавлено автор Lightness Races in Orbit, источник
@Inafune: Или используйте метод извлечения потока кроме getline . Никакие указатели не требуются. Да, определенно необходимо читать намного больше.
добавлено автор Lightness Races in Orbit, источник
@Inafune: Просто имея книгу won' t достаточны. Чтение его было бы, вероятно (если это - хорошая книга).Do, вы понимаете то, что цель cInputChar ? Не тогда играя вокруг с 0 или без won' t помогают вам очень.
добавлено автор Alok Save, источник
@Inafune, Даже если вы - самообучение, я думаю, что вам нужна хорошая книга (поскольку это действительно не могло быть ни из какой книги),
добавлено автор asheeshr, источник
Я попробовал его без эти [0] и отредактировал getline, чтобы прочитать ' getline (cin, cInputChar) ' Теперь я получаю ошибку ' Никакой вызов функции соответствия к getline...'
добавлено автор Inafune, источник
@LightnessRacesinOrbit у меня есть книга, но I' m не совсем уверенный, что я должен делать, когда эта конкретная ошибка происходит.
добавлено автор Inafune, источник
@Alok Экономят, я использовал cInputChar, чтобы взять вход и проверить it' s размер. После этого, если размер был равен 1 I' d хранят его в cSeriesDecision. Честно говоря, размещая на Вопросах и ответах, я вид ожидаемой помощи. Я действительно ценю you' ре вводится все же. И я читал его.
добавлено автор Inafune, источник
Гонки @lightness в Орбите: Я понимаю. Преодолевая проблему самостоятельно я узнаю больше. I' ll делают еще некоторое чтение. Случайная работа просто походит на лучший тип переменной; как жало isn' t необходимый. Вход любой ' y' или ' n' таким образом, последовательность была бы бессмысленна. Я избавился от массива символов, как предложенный Alok, но держал его как тип случайной работы. Теперь I' m, просто получив getline ошибку. Спасибо за всю помощь так или иначе. Я действительно ценю его.
добавлено автор Inafune, источник
@LightnessRacesinOrbit: Это имеет больше смысла. Таким образом, последовательность необходима для входа, и длина может быть проверена позже. Но последовательность - по существу множество характера, правильно? Таким образом, это должно быть изменено с указателем, я думаю. Бог, я действительно должен прочитать еще немного, прежде чем я буду делать попытку этого.
добавлено автор Inafune, источник
@LightnessRacesinOrbit: Я использовал getline, потому что я читал на Cplusplus (место) что использование cin с '>> ' оператор может вызвать много ошибок на входном потоке. Я знаю ^^, спасибо за всю помощь.
добавлено автор Inafune, источник