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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
VLK
193 / 162 / 12
Регистрация: 05.05.2013
Сообщений: 1,222
#1

char массив, get(), ввести больше символов чем в массиве - C++

17.08.2013, 19:42. Просмотров 1663. Ответов 45
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream> 
using std::cin;
using std::cout;
using std::endl;
 
int main()
{
setlocale(LC_ALL,"");
 
char AAA[10];
char BBB[10];
 
cout << "Введите первый массив: ";
cin.get(AAA, 10);
 
cout << "Введите второй массив: ";
cin.get(BBB, 10);
 
system("pause");
return 0;
}
если я при вводе первого массива, введу больше 12 символов, допустим 12, то второй массив мне ввести не даст, как избавится от этого? cin.ignore() не помогает.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2013, 19:42     char массив, get(), ввести больше символов чем в массиве
Посмотрите здесь:

C++ Поиск слова в массиве символов char
C++ Вычесть два массива, если в одном массиве больше элементов, чем в другом
первод массива char в массив int ( в чем ошибка?????) C++
C++ Привет. В программе вводится количество строк и столбцов. Мы можем ввести больше столбцов чем задали.
не выводится Массив символов (char) C++
Массив символов char и указатели C++
Чтение входных данных размером больше чем 4096 символов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4876 / 3015 / 370
Регистрация: 10.11.2010
Сообщений: 11,075
Записей в блоге: 10
Завершенные тесты: 1
17.08.2013, 22:07     char массив, get(), ввести больше символов чем в массиве #21
Согласен с тем, что тут определенно лучше пользоваться типом string, раз уж речь идет о С++ ...
VLK
193 / 162 / 12
Регистрация: 05.05.2013
Сообщений: 1,222
17.08.2013, 22:18  [ТС]     char массив, get(), ввести больше символов чем в массиве #22
Руки уже заплетаются, ну и мозг вместе с ним, не буду рыться в книге, там написано, почему лучше использовать char, я сейчас учу запись в файл, редактирование, чтение из файла, и вроде как, потому что там определенное количество в отличии от string, по этому приходится использовать массив char, я не думал что так сложно с "обрубкой" не нужных (превышающих лимит) символов.
Наверное проще использовать преобразовании string в char
castaway
Эксперт С++
4876 / 3015 / 370
Регистрация: 10.11.2010
Сообщений: 11,075
Записей в блоге: 10
Завершенные тесты: 1
17.08.2013, 22:20     char массив, get(), ввести больше символов чем в массиве #23
Цитата Сообщение от VLK Посмотреть сообщение
не буду рыться в книге, там написано, почему лучше использовать char
Если в этой книге говорится про работу со строками в С++, тогда лучше выкинь её и найди другую.
VLK
193 / 162 / 12
Регистрация: 05.05.2013
Сообщений: 1,222
17.08.2013, 22:22  [ТС]     char массив, get(), ввести больше символов чем в массиве #24
Цитата Сообщение от castaway Посмотреть сообщение
Если в этой книге говорится про работу со строками в С++, тогда лучше выкинь её и найди другую.
выкинуть дейтела?
icpu
314 / 219 / 41
Регистрация: 10.03.2011
Сообщений: 1,048
Записей в блоге: 2
17.08.2013, 22:23     char массив, get(), ввести больше символов чем в массиве #25
C++
1
2
3
4
5
6
7
const int MaxSize = 10;
string input
cin >> input;
if (input.size()>MaxSize)
   input.erise(input.begin()+10,input.end());
char blah[MaxSize+1]={0};
strcpy(blah,input.c_str());
или
C++
1
2
3
4
5
const int MaxSize = 10;
string input
cin >> input;
char blah[MaxSize+1]={0};
strncpy(blah,input.c_str(),MaxSize);
castaway
Эксперт С++
4876 / 3015 / 370
Регистрация: 10.11.2010
Сообщений: 11,075
Записей в блоге: 10
Завершенные тесты: 1
17.08.2013, 22:25     char массив, get(), ввести больше символов чем в массиве #26
Цитата Сообщение от VLK Посмотреть сообщение
выкинуть дейтела?
А ты уверен что там так написано? (я Дейтела не читал, но слышал что книга не плохая)
Jupiter
Каратель
Эксперт С++
6549 / 3969 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.08.2013, 22:26     char массив, get(), ввести больше символов чем в массиве #27
Цитата Сообщение от VLK Посмотреть сообщение
не думал что так сложно с "обрубкой" не нужных (превышающих лимит) символов.
никаких сложной нет, это твоя невнимательность
VLK
193 / 162 / 12
Регистрация: 05.05.2013
Сообщений: 1,222
17.08.2013, 22:28  [ТС]     char массив, get(), ввести больше символов чем в массиве #28
Цитата Сообщение от Jupiter Посмотреть сообщение
никаких сложной нет, это твоя невнимательность
в чем именно заключается невнимательность
icpu
314 / 219 / 41
Регистрация: 10.03.2011
Сообщений: 1,048
Записей в блоге: 2
17.08.2013, 22:30     char массив, get(), ввести больше символов чем в массиве #29
Это так, навскидку, а вообще, странно, что используется постоянно смесь C и C++. Либо вы классик, используете malloc, scanf("%10d",&a) и void*, либо вы новатор, и тогда ваш выбор new, cin и string.
А вообще, по стандарту вводиться должно без мусора.
попробуйте просто исправить
C++
1
2
char AAA[10] = {0};
char BBB[10] = {0};
VLK
193 / 162 / 12
Регистрация: 05.05.2013
Сообщений: 1,222
17.08.2013, 22:32  [ТС]     char массив, get(), ввести больше символов чем в массиве #30
Цитата Сообщение от castaway Посмотреть сообщение
А ты уверен что там так написано? (я Дейтела не читал, но слышал что книга не плохая)
char массив, get(), ввести больше символов чем в массиве

char массив, get(), ввести больше символов чем в массиве

вот в программе + описание, там написано почему

Или я опять что то не так понял?
castaway
Эксперт С++
4876 / 3015 / 370
Регистрация: 10.11.2010
Сообщений: 11,075
Записей в блоге: 10
Завершенные тесты: 1
17.08.2013, 22:39     char массив, get(), ввести больше символов чем в массиве #31
Цитата Сообщение от VLK Посмотреть сообщение
Или я опять что то не так понял?
Опять. Там написано что программа должна работать с "записями постоянной длины" и поэтому там используется массив символов типа char. Ткни меня носом где сказано что использование массивов символов правильней и удобней чем использование класса string.

Цитата Сообщение от icpu Посмотреть сообщение
Либо вы классик, используете malloc, scanf("%10d",&a) и void*
void * - не используется в С++ ?
Jupiter
Каратель
Эксперт С++
6549 / 3969 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.08.2013, 22:40     char массив, get(), ввести больше символов чем в массиве #32
Цитата Сообщение от VLK Посмотреть сообщение
в чем именно заключается невнимательность
невнимательность заключается в причине по которой создана тема:
Цитата Сообщение от VLK Посмотреть сообщение
cin.ignore() не помогает.
и того что подавалось на ввод
VLK
193 / 162 / 12
Регистрация: 05.05.2013
Сообщений: 1,222
17.08.2013, 22:45  [ТС]     char массив, get(), ввести больше символов чем в массиве #33
Цитата Сообщение от castaway Посмотреть сообщение
Опять. Там написано что программа должна работать с "записями постоянной длины" и поэтому там используется массив символов типа char. Ткни меня носом где сказано что использование массивов символов правильней и удобней чем использование класса string.
Ну я только начинающий и по мне при работе с записью в файл лучше использовать фиксированную длину (особенно если ты начинающий ), а у string то она не фиксированная?

Добавлено через 2 минуты
Jupiter, но ведь рабочий вариант, он не позволяет вводить несколько слов через пробел
castaway
Эксперт С++
4876 / 3015 / 370
Регистрация: 10.11.2010
Сообщений: 11,075
Записей в блоге: 10
Завершенные тесты: 1
17.08.2013, 22:47     char массив, get(), ввести больше символов чем в массиве #34
Цитата Сообщение от VLK Посмотреть сообщение
а у string то она не фиксированная?
Метод string::c_str() возвращает указатель с фиксированной длиной.
icpu
314 / 219 / 41
Регистрация: 10.03.2011
Сообщений: 1,048
Записей в блоге: 2
17.08.2013, 22:48     char массив, get(), ввести больше символов чем в массиве #35
castaway, избегаются всеми возможными способами, ибо есть касты. По крайней мере приводить к пустоте по-хорошему нельзя. Баста.
castaway
Эксперт С++
4876 / 3015 / 370
Регистрация: 10.11.2010
Сообщений: 11,075
Записей в блоге: 10
Завершенные тесты: 1
17.08.2013, 22:49     char массив, get(), ввести больше символов чем в массиве #36
Цитата Сообщение от icpu Посмотреть сообщение
castaway, избегаются всеми возможными способами, ибо есть касты. По крайней мере приводить к пустоте по-хорошему нельзя. Баста.
Что ты сейчас сказал? Я ни черта не понял. Особенно не понял к чему ты это сказал..
icpu
314 / 219 / 41
Регистрация: 10.03.2011
Сообщений: 1,048
Записей в блоге: 2
17.08.2013, 22:56     char массив, get(), ввести больше символов чем в массиве #37
Цитата Сообщение от castaway Посмотреть сообщение
void * - не используется в С++ ?
Для приведения типов используются static_cast, dynamic_cast, const_cast. Для хранения объектов - умные указатели. Для возможности хранить разные классы в одном массиве, их наследуют от одного предка, после чего вгоняют указатели в вектор.
Тип void* и приведение указателей к void* есть, но их использование может поделить вселенную на ноль нежелательно.
castaway
Эксперт С++
4876 / 3015 / 370
Регистрация: 10.11.2010
Сообщений: 11,075
Записей в блоге: 10
Завершенные тесты: 1
17.08.2013, 23:09     char массив, get(), ввести больше символов чем в массиве #38
icpu, ок. Не это не то о чем я хотел тебя спросить. Что может заменить тип void * в С++ и почему его нежелательно использовать?
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
17.08.2013, 23:20     char массив, get(), ввести больше символов чем в массиве #39
castaway, Иерархия, any и т.д. void* самый простой вариант конечно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2013, 23:26     char массив, get(), ввести больше символов чем в массиве
Еще ссылки по теме:

Ввести строку. Выдать все слова, которые имеют длину больше, чем длина последнего слова строки C++
Как заставить Strncpy вложить в itog часть символов строки str, если дина str больше, чем кол-во нужных нам символов? C++
C++ Вставить число k1 после всех чисел в массиве больше чем digit
Нужно ввести текст, если он больше 80 символов нужно чтоб он переходил на новую строку C++
В динамическом массиве нельзя ввести больше 1 символа C++

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

Или воспользуйтесь поиском по форуму:
castaway
Эксперт С++
4876 / 3015 / 370
Регистрация: 10.11.2010
Сообщений: 11,075
Записей в блоге: 10
Завершенные тесты: 1
17.08.2013, 23:26     char массив, get(), ввести больше символов чем в массиве #40
ForEveR, мм.. что иерархия?
Я не беру в расчет сторонние либы типа boost. К примеру: не вижу причин заменять void * на boost::any в приложении типа "Hello, World!"
Yandex
Объявления
17.08.2013, 23:26     char массив, get(), ввести больше символов чем в массиве
Ответ Создать тему
Опции темы

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