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

Некорректное считывание строки

22.06.2015, 20:02. Показов 929. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно столкнулся с такой проблемой... Не считываются ФИО с пробелами. Либо, если юзаю gets, то во второй записи исчезает пункт ФИО. Да и выводится криво... Как организовать считывание и вывод этой строки с пробелами? Само задание:

Построить иерархию классов Человек (ФИО, возраст, пол) и Школьник(школа, класс) в каждом классе предусмотреть функции чтения/записи, конструкторы, деструкторы, и статическое поле "количество". Создать динамически 2 записи производного класса.





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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <malloc.h>
#include <string.h>
 
using namespace std;
class class1
{
private:
    static int count;
    int id;
protected:
    char *v;
    char *v1;
    double v2;
public:
    class1();
    ~class1();
    void out();
};
 
int class1::count = 0;
 
class1::class1()
{
    char v3[40];
    char v4[40];
    count++;
    id = count;
    cout << "Enter fio: ";
    cin >> v3;
 
 
// Вот это место
 
 
    v = new char[strlen(v3)];
    strcpy(v, v3);
    cout << "Enter pol: ";
    cin >> v4;
    v1 = new char[strlen(v4)];
    strcpy(v1, v4);
    cout << "vozrast= ";
    cin >> v2;
}
 
class1 :: ~class1()
{
    cout << "delite object: " << id << ". " << v << " " << v2 << " " << v1 << endl;
}
 
class class2 : public class1
{
protected:
    static int count;
    int id;
    char *v5;
    int v2_class2;
public:
    class2();
    ~class2();
    void out();
};
 
int class2::count = 0;
 
 
class2::class2() : class1()
{
    char v6[40]; 
    count++;
    id = count;
    cout << "shkola: ";
    cin >> v6;
    v5 = new char[strlen(v6)];
    strcpy(v5, v6);
    cout << "klass: ";
    cin >> v2_class2;
}
 
class2 :: ~class2()
{
    cout << "Delete object class2: " << id << ". " << v << " " << v2 << v5 << " " << "klass-" << v2_class2 << endl;
}
 
void class2::out()
{
         cout << id << ". " << v << " | " << "vozrast-" << v2 << " | " << "shkola-" << v5 << " | " << "klass-" << v2_class2 << endl;
}
 
void main()
{
    setlocale(LC_ALL, "Russian");
    class2*f[2];
    system("chcp 1251");
    system("cls");
    f[0] = new class2;
    f[1] = new class2;
    for (int i = 0; i<2; i++)
        f[i]->out();
    delete f[0];
    delete f[1];
    cin.get(); cin.get();
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.06.2015, 20:02
Ответы с готовыми решениями:

Некорректное считывание строки
Доброго времени суток. Подскажите, пожалуйста, с чем связана данная проблема: есть текст в файле, вот такой: &quot;Microsoft MS,...

Некорректное считывание из файла
Есть необходимость записывать и считывать в файл и обратно С первым все просто, со вторым казалось бы тоже, но не получается void...

некорректное считывание из файла
ifstream ifst(FNAME_USERLIST); while(!ifst.eof()) { string templog; string temppas; int tempacc; ...

4
67 / 67 / 72
Регистрация: 10.04.2015
Сообщений: 281
22.06.2015, 20:19
cin.getline(v3,sizeof(v3));

Как-то так, может сработает.
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
22.06.2015, 20:44
Цитата Сообщение от Danichee Посмотреть сообщение
v = new char[strlen(v3)];
strcpy(v, v3);
Памяти мало выделяешь, нужно и под '\0':
C++
1
2
v = new char[strlen(v3) + 1];
strcpy(v, v3);
0
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 27
22.06.2015, 21:24  [ТС]
Попробовал так, теперь считывает, но в записи выводит только последнее слово


cin.getline(v3,sizeof(v3));

Как-то так, может сработает.
Цитата Сообщение от Danichee Посмотреть сообщение
Попробовал так, теперь считывает, но в записи выводит только последнее слово
cin.getline(v3,sizeof(v3));
Как-то так, может сработает.
Точнее выводит все, кроме первого слова... что не так?
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
22.06.2015, 22:24
Цитата Сообщение от Danichee Посмотреть сообщение
Попробовал так,
Как? Код, где читаешь показывай.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.06.2015, 22:24
Помогаю со студенческими работами здесь

Некорректное обрезание строки
Снова всем добрый день.:) Появилась новая проблемка... Наверное, как всегда, вечер рабочего дня затмевает разум, но всё же. Есть...

Некорректное форматированием строки после %d
Всем доброго времени суток. При форматировании строки любым способом (sprintf либо самописное string_format) после %d не работает...

считывание строки
ввело в ступор... как считать строку без применения стринга..ну т.е.: char a; cin &gt;&gt; a; как мне теперь считать...

Считывание строки
В общем появилась у меня недавно необходимость чужой код из консоли перевести в форму. Все функции подключил к контролам но 1 строку кода...

считывание строки. С++
Строка считывается посимвольно буквами. а надо, чтобы словами.. как это сделать? FILE *fp2 = fopen(&quot;V.txt&quot;, &quot;rb&quot;);...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru