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

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

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

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

16.07.2013, 19:58. Просмотров 884. Ответов 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++
Почему в моем случае getline(cin, m) не срабатывает без cin.ignore() ? Если по коду есть какие-нибудь замечания, то просьба написать что не...

Продемонстрировать различие между вводом с помощью cin.Get и cin.Getline с тремя параметрами - C++
Нужна помощь. Задача продемонстрировать различие между вводом с помощью cin.get и cin.getline с тремя параметрами, как из потока достать...

Как сравнить два указателя типа char? - C++
char *p1; p1 = new char; p1 = &quot;qwert&quot;; char *p2; p2 = new char; p2 = &quot;zz&quot;; if(*p1==*p2) cout &lt;&lt; &quot;Равны! &quot;&lt;&lt; endl; ...

Сохранение/Загрузка указателя на указатель типа char - C++
char **data = new char*; Подскажите, пожалуйста, как записать содержимое всего выше написанного в файл в двоичном виде, а также,...

Отличие функции cin.get и cin.getline - C++
Добрый день! Изучаю функции get и getline, сказано, что они отличаются тем, что функция get считывает символ разрыва строк и оставляет...

использую cin.getline() для заполнения динамического массива, и шляпа - C++
делал задачку в теме ниже, типа заменить в строке символ &quot;:&quot; на &quot;;&quot;, решил сделать при помощи динамического массива, размер которого...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
16.07.2013, 20:15 #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  [ТС] #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];
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2013, 20:33
Привет! Вот еще темы с ответами:

Отличие getline() от cin.getline() - C++
Чем отличается getline() от cin.getline() ?

getline(cin, str) и cin>> - C++
Добрый день. Есть код: ... string str; int N; cin&gt;&gt; N; getline(cin, str); cout&lt;&lt;str&lt;&lt;endl; //Выводит: &lt;пустота&gt; ...

Cin вместо cin.getline - C++
#include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include &lt;fstream&gt; using namespace std; int get_int(int default_value); char name; ...

Не работает ни cin.Get(), ни cin.Getline() - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &quot;conio.h&quot; #include &quot;windows.h&quot; #include &quot;string.h&quot; using namespace::std; const...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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