Я очень новичок в Cpp, и у меня есть некоторые проблемы, объявляющие входные потоки. Я продолжаю получать ошибку: «ошибка: нет соответствия для« operator >> »в« std :: cin >> new_contact.Person :: Name », в дополнение к целому числу других вещей, которые все связаны с неправильным использованием >> оператор он выглядит. Вот код, а также структура для каждого из структур используется.Проблема C++ с операторами потоков
#include <iostream>
#include <map>
#include <string>
#include <vector>
using std::string;
using std::vector;
using std::endl;
using std::map;
using std::cout;
using std::cin;
typedef struct {
string Name;
map<string,int> Number;
} Person;
void addContact(vector<Person> Contacts) {
Person new_contact;
char ans;
string name;
cout << "What is the name of your new contact (first name)? " << endl;
cin >> new_contact.Name;
cout << "Do you want to enter a number for your contact? " << endl;
cin >> ans;
while (ans == 'y') {
cout << "What type of number are you entering? " << endl; //ex CELL, FAX, HOME, WORK, etc.
cin >> name;
cout << "What is the number of your contact? " << endl;
cin >> new_contact.Number[name];
cout << "do you want to enter another number? " << endl;
cin >> ans;
}
Contacts.push_back(new_contact);
}
Пожалуйста, дайте мне знать, где я неправильно, как я не вижу никаких вопиющих вопросов, когда сравнивая то, что у меня было с предыдущими ошибками, с которыми сталкиваются люди (большинство людей, испытывающих эту проблему, похоже, ставят команду endl в конце потока cin, однако я этого не делал). Спасибо заранее!
EDIT: Теперь я застрял с бесконечным циклом, пытаясь перепроверить «ans» vari возможность. Функция просто бесконечно проходит через чередующиеся «Вы хотите ввести еще один nummber?» и «Какой тип номера вы вводите?» без ввода от меня.
Вы, вероятно, обнаружить в какой-то момент, что функция не имеет никакого эффекта, так как он работает только на локальной переменной и не вызывает никаких побочных эффектов (кроме потребления входных данных). Вы также обнаружите, что ваши лица не могут иметь места на своем имени. –