Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2009, 13:39   #1
-ushёl-
Форумчанин
 
Аватар для -ushёl-
 
Регистрация: 04.02.2009
Сообщений: 141
Вопрос Подскажите по структурам и вводу объектов string

Выполняю одну задачку при помощи динамической структуры.При вводе в консоле программа допускает ввод только единого имени comp(без пробелов,например:Сидоров Иван-непойдёт).Подскажите как сделать вывод и имени и фамилии?Функция getline(cin,VidPiza->comp) не помогает!
ps:может проблема в компиляторе,пользуюсь wxDev-C++

Код:
#include <iostream>
#include<string>
using namespace std;
struct pizza
    {
        double diam;
        string komp;
           int weight;
    };
int main(int argc, char *argv[])
{
     pizza * VidPizza = new pizza;
     cout<<"vvedite diametr pizzi: ";
     cin>>VidPizza->diam;
     cout<<"Vvedite kompaniu proizvoditelya pizzi: ";
     cin>>VidPizza->komp;
     // proboval i tak: getline(cin,VidPizza->komp);
     cout<<"vvedite ves pizzi: ";
     cin>>VidPizza->weight;
     cout<<VidPizza->diam<<"\n"<<VidPizza->komp<<"\n"<<VidPizza->weight<<endl;
     delete VidPizza;
    system("PAUSE");
    return EXIT_SUCCESS;
}

Последний раз редактировалось Sazary; 16.11.2009 в 00:32. Причина: забыл вставить код
-ushёl- вне форума Ответить с цитированием
Старый 14.11.2009, 14:02   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Перед getline напишите cin.get() или cin.ignore() - должно помочь. Проблема в том, что cin >> VidPizza->diam не считал перевод строки, потому getline возвращается сразу прочитав только его, игнорируя введённую строку
netrino вне форума Ответить с цитированием
Старый 14.11.2009, 14:18   #3
-ushёl-
Форумчанин
 
Аватар для -ushёl-
 
Регистрация: 04.02.2009
Сообщений: 141
По умолчанию

Спасибо!!!Помогла ф. ignore,но правда пришлось поменять в структуре строку на символьный массив с 20-ю допустимыми значениями...А как решить вопрос с объектом string??
работает:
Код:
#include <iostream>
#include<string>
using namespace std;
struct pizza
    {
        double diam;
        char komp[20];
           int weight;
    };
int main(int argc, char *argv[])
{
     pizza * VidPizza = new pizza;
     cout<<"vvedite diametr pizzi: ";
     cin>>VidPizza->diam;
     cout<<"Vvedite kompaniu proizvoditelya pizzi: ";

    // cin>>VidPizza->komp;
     cin.ignore().getline(VidPizza->komp,20);
     cout<<"vvedite ves pizzi: ";
     cin>>VidPizza->weight;
     cout<<VidPizza->diam<<"\n"<<VidPizza->komp<<"\n"<<VidPizza->weight<<endl;
     delete VidPizza;
    system("PAUSE");
    return EXIT_SUCCESS;
}

Последний раз редактировалось Sazary; 16.11.2009 в 00:32.
-ushёl- вне форума Ответить с цитированием
Старый 14.11.2009, 14:27   #4
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

А со стрингами так не работает? У меня всё норм:
Код:
#include <iostream>
#include<string>
using namespace std;
struct pizza
{
double diam;
string komp;
int weight;
};
int main(int argc, char *argv[])
{
pizza * VidPizza = new pizza;
cout<<"vvedite diametr pizzi: ";
cin>>VidPizza->diam;
cout<<"Vvedite kompaniu proizvoditelya pizzi: ";

// cin>>VidPizza->komp;
cin.ignore();
getline(cin, VidPizza->komp);
cout<<"vvedite ves pizzi: ";
cin>>VidPizza->weight;
cout<<VidPizza->diam<<"\n"<<VidPizza->komp<<"\n"<<VidPizza->weight<<endl;
delete VidPizza;
system("PAUSE");
return EXIT_SUCCESS;
}
netrino вне форума Ответить с цитированием
Старый 14.11.2009, 14:52   #5
-ushёl-
Форумчанин
 
Аватар для -ushёl-
 
Регистрация: 04.02.2009
Сообщений: 141
По умолчанию

Всё работает отлично!!!!Я просто не так последовательность записал.
С char проходит такой ход cin.ignore().getline(VidPizza->komp,20);а вот со стрингами нет.
cin.ignore(); getline(cin,VidPizza->komp);
-ushёl- вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по динамическим структурам Sergy Win Api 2 10.05.2011 13:37
Совет с литературой к Структурам данных! phpcreator Помощь студентам 1 19.09.2009 22:30
Visual Studio - Задача по структурам(Списки) opsi Помощь студентам 1 01.06.2009 10:04
Вопрос по структурам и динамической памяти. ROD Общие вопросы C/C++ 4 12.04.2009 18:20
Ограничение по вводу символов в Edit-e Alexij Общие вопросы Delphi 1 26.06.2008 16:27