Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Neoni
6 / 6 / 6
Регистрация: 17.05.2012
Сообщений: 35
Завершенные тесты: 1
#1

Можно ли использовать cin.getline для указателя типа char* - C++

16.07.2013, 19:58. Просмотров 852. Ответов 2
Метки нет (Все метки)

Вот к примеру код он работает, но при отладке Ошибка доступа.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
struct EXAMPLE{char* pName;
               char* pAvto;
               EXAMPLE* next;
               };
int main(int nArg,char* pszArgv[])
{EXAMPLE* pv = new EXAMPLE;
 cin.getline(pv->pName,128);
 cout << pv->pName;
 cin.sync();
 cin.get();
return 0;}
Хотелось бы разобраться как вообще возможно сделать так что бы указатель ссылался на строку, не используя
дополнительно обьявлений переменных и какой функцией?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2013, 19:58     Можно ли использовать cin.getline для указателя типа char*
Посмотрите здесь:
C++ Метод getline(cin, m) не срабатывает без cin.ignore() / Ревью кода
C++ Продемонстрировать различие между вводом с помощью cin.Get и cin.Getline с тремя параметрами
C++ Как сравнить два указателя типа char?
Сохранение/Загрузка указателя на указатель типа char C++
C++ Отличие функции cin.get и cin.getline
C++ использую cin.getline() для заполнения динамического массива, и шляпа
Отличие getline() от cin.getline() C++
cin.getline и cin.ignore C++
C++ Не работает ни cin.Get(), ни cin.Getline()
getline(cin, str) и cin>> C++
C++ Cin вместо cin.getline
Пишем исключения для каждого типа данных, или можно использовать шаблон? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
16.07.2013, 20:15     Можно ли использовать cin.getline для указателя типа char* #2
Цитата Сообщение от Neoni Посмотреть сообщение
cin.getline(pv->pName,128)
так нельзя.
pv->pName
Это просто указатель.
неинициализированный.
Он может указывать в произвольное место в памяти.
И массива символов в этом месте уж точно не будет выделено.

(Для справки. Массив выделяется оператором new):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
struct EXAMPLE{char* pName;
               char* pAvto;
               EXAMPLE* next;
               };
int main(int nArg,char* pszArgv[]){
  EXAMPLE* pv = new EXAMPLE;
  pv->pName=new char[128];
  cin.getline(pv->pName,128);
  cout << pv->pName;
  cin.sync();
  cin.get();
  delete[] pv->pName;
  delete pv;
return 0;
}
Добавлено через 1 минуту
Цитата Сообщение от Neoni Посмотреть сообщение
Хотелось бы разобраться как вообще возможно сделать так что бы указатель ссылался на строку, не используя
дополнительно обьявлений переменных
Что ты понимаешь под "дополнительно обьявлениями переменных"???
Neoni
6 / 6 / 6
Регистрация: 17.05.2012
Сообщений: 35
Завершенные тесты: 1
16.07.2013, 20:33  [ТС]     Можно ли использовать cin.getline для указателя типа char* #3
т.е. получается только так
C++
1
2
3
char buf[20];
pv->pName = buf;
cin.getline(pv->pName,(sizeof(pv->pName)-1));
Просто хотелось создать динамический список не такого плана а с использованием указателей
C++
1
2
3
struct NODE{ char szName[10];
                   char szAvto[10];
                 };
Добавлено через 8 минут
я про это вообще не подумал что можно просто выделить динамически память

C++
1
pv->pName=new char[128];
Yandex
Объявления
16.07.2013, 20:33     Можно ли использовать cin.getline для указателя типа char*
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru