Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 76

Не работает getline()

07.08.2013, 13:06. Показов 3033. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть класс, в котором в функции printPaste считывается строка пользователем. При вызове этой функции после ввода переменной position компилятор игнорирует
C++
1
2
getline(cin, NewString); 
UserStr.insert (position, NewString) ;
и сразу начинает выводить строку.

Если это заменить оператором,
C++
1
cin >> NewString ;
то строка считывается, но без пробелов, а мне нужно с пробелами. Объясните в чем дело ?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class MyClassString
{
private:
    string NewString ; 
    int LengthString ;
public:
    void printRevers (string &UserStr)  // реверс
    {
        LengthString = UserStr.length() ;
        for (int i = 0; i < LengthString / 2 ; ++i)
            swap( UserStr[i], UserStr[LengthString-1-i] );
        cout << endl << "Строка после реверса: " << endl <<UserStr << endl ;
    }
    void printPaste (string &UserStr)  // вставка в произвольную позицию
    {
        int position ;
        cout << "Введите позицию, куда вы будете вставлять свою строку" << endl
            << "(отчет позиций введется с 0): " ;
        cin >> position ;
        cout << "Введите вставляемое: " ;
        getline(cin, NewString); // ЭТО НЕ РАБОТАЕТ
        UserStr.insert (position, NewString) ;
        cout << endl << UserStr << endl ;
    }
};
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.08.2013, 13:06
Ответы с готовыми решениями:

Не работает getline()
Это часть из моего курсового, почему-то когда я запрашиваю заполнение структуры, то на то, что заполняется гетлайном программа просто...

не работает getline
Подскажите, пожалуйста, почему не работает getline? Нужно ввести порядковый номер служащего и его имя с фамилией, но getline пропускает...

Не работает getline()
Здравствуйте, есть такой код: bool Library::AddNewBook() { bool repeat = true; char answer; std::regex author(AuthorExp); ...

8
Ghost
 Аватар для Belfegor
174 / 174 / 40
Регистрация: 16.09.2012
Сообщений: 526
07.08.2013, 13:09
C++
1
std::getline(std::cin, NewString);
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
07.08.2013, 13:10
C++
1
(cin >> position).get();
1
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 76
07.08.2013, 16:04  [ТС]
Опять та же проблема с getline. Пробовал применить фишку из последней подсказки, не помогло. Симптомы те же: Не считывает строку Подскажите, как это исправить ? И почему такое возникает ?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void printPartition (string &UserStr)  //  разбиение строки на набор подстрок по заданному разделителю 
    {
        string separator ;
        cout << "Введите разделитель из 1-ого символа:" ;
        getline(cin, separator) ;
        LengthString = UserStr.length() ;
        cout << endl << "Разбиение строки по заданному разделителю: " << endl ;
        for (int k = 0 ; k < LengthString ; k++)
        {
            if (UserStr[k] == separator[0])
                UserStr[k] = '\n' ;
            cout << UserStr[k] ;
        }
    }
0
sergeyborod2000
07.08.2013, 16:17
везде getline пользуешь в проекте?
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 76
07.08.2013, 16:19  [ТС]
аха
0
71 / 71 / 13
Регистрация: 13.05.2012
Сообщений: 130
07.08.2013, 16:29
если перед getline использовать cin, то нужно после него прописать cin.ignore()
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include<iostream>
#include<string>
using namespace std;
 
 
class MyClassString
{
private:
    string NewString ; 
    int LengthString ;
public:
    void printRevers (string &UserStr)  // реверс
    {
        LengthString = UserStr.length() ;
        for (int i = 0; i < LengthString / 2 ; ++i)
            swap( UserStr[i], UserStr[LengthString-1-i] );
        cout << endl << "Строка после реверса: " << endl <<UserStr << endl ;
    }
    void printPaste (string &UserStr)  // вставка в произвольную позицию
    {
        int position ;
        string n;
        cout << "Введите позицию, куда вы будете вставлять свою строку" << endl
            << "(отчет позиций введется с 0): " ;
        cin >> position ;
        cout << "Введите вставляемое: " <<endl;
        cin.ignore();
         getline(cin,n);
        UserStr.insert (position, n) ;
        cout << endl << UserStr << endl ;
    }
};
int main()
{
    setlocale(LC_CTYPE,"rus");
    MyClassString m;
    string s="fgghhjjj kkkk";
    m.printPaste(s);
    system("pause");
    return 0;
}
1
 Аватар для Schizorb
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
07.08.2013, 16:30
mikhail90, какое отношение последний код имеет к проблеме?

После считывания в int position в потоке остается символ '\n'. Перед вводом строки, его нужно удалить. Как вам уже подсказали, такой код работает:

C++
1
2
3
4
int position;
string str;
(cin >> x).get();
getline(cin, str);
1
4 / 4 / 0
Регистрация: 15.06.2013
Сообщений: 60
10.08.2013, 17:18
Вывести предложение построчно по словам
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.08.2013, 17:18
Помогаю со студенческими работами здесь

Не работает getline();
Всем доброго дня:) Не работает кусочек кода: class Employee { private: string name;

Не работает getline!
Почему-то, когда ввожу строку с помощью cin.getline, всё равно строка записывается до первого пробела :( #include &lt;conio.h&gt;; ...

Не работает getline
Привет всем! непонимаю почему не работает getline. вот код #include &lt;training.h&gt; #include &lt;iostream&gt; #include &lt;string&gt; ...

Не работает getline
Есть прога, которая считает предложения и выводит самое длинное.Есть главный кейс с меню. В первом пункте кейса есть гетлайн, но при выборе...

не работает getline
Есть код (писал не я), но не могу понять, почему getline() игнорируется в строке 72. Сначала не работало в функции класса, потом решил...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru