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

Ввод строки - C++

Восстановить пароль Регистрация
 
andryshka
2 / 2 / 0
Регистрация: 05.12.2013
Сообщений: 81
09.01.2014, 00:16     Ввод строки #1
Как ввести массив символов (строку)? (желательно все возможные варианты)
А то через gets фигня какая-то получается.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2014, 00:16     Ввод строки
Посмотрите здесь:

C++ ввод строки
C++ с++ ввод строки и ....
C++ Ввод строки
C++ Ввод строки
ввод строки C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,912
09.01.2014, 00:20     Ввод строки #2
Как вариант:

C++
1
2
3
char mas[20];
cout<<" Vvod"<<endl;
cin>>mas;
Ev_Hyper
 Аватар для Ev_Hyper
1805 / 1626 / 435
Регистрация: 15.12.2013
Сообщений: 5,773
09.01.2014, 00:23     Ввод строки #3
так только до первого пробела будет считывать.
andryshka
2 / 2 / 0
Регистрация: 05.12.2013
Сообщений: 81
09.01.2014, 00:23  [ТС]     Ввод строки #4
Не подходит тут посимвольный ввод,а мне нужно сразу целиком строку ввести.
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,912
09.01.2014, 00:24     Ввод строки #5
string можно вместо char.

Добавлено через 35 секунд
Цитата Сообщение от andryshka Посмотреть сообщение
Как ввести массив символов
char это и есть массив символов.
andryshka
2 / 2 / 0
Регистрация: 05.12.2013
Сообщений: 81
09.01.2014, 00:25  [ТС]     Ввод строки #6
Цитата Сообщение от S_el Посмотреть сообщение
char это и есть массив символов.
разве char это не символ?
Ev_Hyper
 Аватар для Ev_Hyper
1805 / 1626 / 435
Регистрация: 15.12.2013
Сообщений: 5,773
09.01.2014, 00:27     Ввод строки #7
C++
1
2
char mas[20];
cin.getline(mas,20);
andryshka
2 / 2 / 0
Регистрация: 05.12.2013
Сообщений: 81
09.01.2014, 00:29  [ТС]     Ввод строки #8
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
cin.getline(mas,20);
объясните пожалуйста эту строку.Зачем ещё раз 20 писать если мы объявили уже массив в 20 элементов?И что за принцип работы функции cin.getline?
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,912
09.01.2014, 00:38     Ввод строки #9
Цитата Сообщение от andryshka Посмотреть сообщение
разве char это не символ?
Символ,все верно.

Добавлено через 1 минуту
Цитата Сообщение от andryshka Посмотреть сообщение
объясните пожалуйста эту строку.Зачем ещё раз 20 писать если мы объявили уже массив в 20 элементов?И что за принцип работы функции cin.getline?
ответ:
Функция getline () читает целую строку, используя символ новой строки,
который передан клавишей <Enter>, для обозначения конца ввода. Этот метод
инициируется вызовом функции cin.getline(). Функция принимает два аргумента. Первый
аргумент — это имя места назначения (т.е. массива, который сохраняет введенную
строку), а второй — максимальное количество символов, подлежащих чтению. Если,
скажем, установлен предел 20, то функция читает не более 19 символов, оставляя
место для автоматически добавляемого в конец нулевого символа. Функция-член
getline () прекращает чтение, когда достигает указанного предела количества
символов или когда читает символ новой строки — смотря, что произойдет раньше.
andryshka
2 / 2 / 0
Регистрация: 05.12.2013
Сообщений: 81
09.01.2014, 00:55  [ТС]     Ввод строки #10
У меня ещё остался вопрос.
Вот бесконечный цикл:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <iomanip>
#include  <string.h>
using namespace std;
int main()
{   
    int cancel_program;
    do 
    {
    char mas[20];
    cin.getline(mas,20);
        int n=strlen(mas);
        cout<<  n << endl;
    cin >> cancel_program ; 
    }
    while(cancel_program!=0);
}
который закончится если введу ноль.
Но если я хочу пойти по новому кругу ,то оно почему-то пропускает ввод строки.
Почему?

Добавлено через 10 минут
Дык что,никто не знает где тут собака зарыта?Может указатель какой в начало строки поставить?
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,912
09.01.2014, 01:03     Ввод строки #11
Цитата Сообщение от andryshka Посмотреть сообщение
Но если я хочу пойти по новому кругу ,то оно почему-то пропускает ввод строки.
Почему?
Хороший вопрос.
Если надо,чтобы использовалось многократно используй обычный cin.

C++
1
cin>>mas;
Добавлено через 2 минуты
Цитата Сообщение от andryshka Посмотреть сообщение
Может указатель какой в начало строки поставить?
В функцию и так передается char по ссылке.
andryshka
2 / 2 / 0
Регистрация: 05.12.2013
Сообщений: 81
09.01.2014, 01:06  [ТС]     Ввод строки #12
Цитата Сообщение от S_el Посмотреть сообщение
Если надо,чтобы использовалось многократно используй обычный cin.
Не подойдёт:cin ведь посимвольно вводит ,а мне до Enter а нужно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2014, 02:01     Ввод строки
Еще ссылки по теме:

Ввод строки C++
C++ Ввод строки в С++
Ввод строки в буфер C++

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

Или воспользуйтесь поиском по форуму:
dremer
 Аватар для dremer
8 / 8 / 0
Регистрация: 18.06.2012
Сообщений: 33
09.01.2014, 02:01     Ввод строки #13
andryshka,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <iomanip>
#include  <string.h>
using namespace std;
int main()
{   
    int cancel_program;
    do 
    {
    char mas[20];
    cin.getline(mas,20);
        int n=strlen(mas);
        cout<<  n << endl;
    cin >> cancel_program ;
    cin.get();
    }
    while(cancel_program!=0);
}
Yandex
Объявления
09.01.2014, 02:01     Ввод строки
Ответ Создать тему
Опции темы

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