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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ С++ и поиск в сети http://www.cyberforum.ru/cpp-beginners/thread939452.html
Как при вводе URL в консоль реализовать поиск сайта в сети и отобразить его в отдельном окне?
C++ Алгоритм шифрования симметричным ключом (CRAB) Помогите, ребята, кто знает, а то я пока слабо понимаю, что нужно сделать и как это реализовать. Нужно написать библиотеку. Требования: Зашифрованный текст может быть расшифрован с помощью инструментов OpenSSL: OpenText => The Library => EncryptedText => OpenSSL tool => OpenText Зашифрованный текст с помощью OpenSSL может быть расшифрован в вашей библиотеке. OpenText => OpenSSL tool =>... http://www.cyberforum.ru/cpp-beginners/thread939449.html
Что выбирать для дальнейшего изучения Windows 7 c Win32 или Windows 8 c WinRt? C++
Стоит или ещё изучать Windows 7 в целом и Win32? Сейчас много людей все ещё пользуется этим, но не уверен стоит ли начинать, ведь будет обидно когда я научусь пользоваться хорошо этим, а оно уже не будет таким популярным и на сцену выйдет Windows 8 и WinRT. Ещё видел очень много плохих отзывов о Win32. А WinRT стала лучше? Может задам некорректный вопрос, но какая из них может помочь в лучшем...
C++ Меню пуск, получить список Win7
Привет, как можно получить список строк в меню пуск, там где возле кнопки "Выключение" есть такая стрелка вправо и если ее нажать откроется список, в котором будет "Сон", "Гибернация" и тд ?
C++ Место расположения проэкта в ноуте http://www.cyberforum.ru/cpp-beginners/thread939388.html
Подскажите, пожалуста, а то я что-то наверно вовсе туплю.. Как создать проект в опридиленой папке? Пока они создаются что-то в C:\Documents and Settings\User\Мои документы\Visual Studio 2010\Projects\MeinFuncts
C++ Напечатать двухмерный массив через функцию Ошибка \main.cpp|26|error: cannot convert 'int (*)' to 'int**' for argument '1' to 'void print(int**, int, int)'| #include <iostream> using namespace std; void print(int **mas, int w, int h) { for (int i = 0; i < h; i++ ) { for (int j = 0; j < w; j++) подробнее

Показать сообщение отдельно
VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
18.08.2013, 13:24  [ТС]     char массив, get(), ввести больше символов чем в массиве
Так что в итоге, хотя я как понимаю это уже переход в другую тему, есть класс у которого есть поля: учетный номер, сумма, Имя и примечание; из которых Имя и примечание это текстовые поля

Если я эти поля делаю в виде char
C++
1
2
char name[15];
char note[100];
то у моего класса будет фиксированная длина, например каждый объект моего класса (ClientData) будет занимать фиксированное число байтов (124), что в свою очередь упросит запись, редактирование и чтение из файла, т.к. я знаю что каждая следующая запись находится на расстоянии +124 байта, от предыдущей, в отличии от string, где нет фиксированной длинны. Или при применении string все равно объект моего класса (ClientData) будет иметь фиксированную длину?

Проблема указанная в первом сообщении, это 2 проблемы:
1. если вдруг при вводе будет введено больше символов, чем умещает массив, setw, ignore с этим справляются, но из-за их использования возникает другая проблема:
2. я не могу ввести в поле "имя", имя состоящие из 2-х слов через пробел.

Выход как я понимаю использовать string, а потом то, что получилось переводить в char[15]

или можно еще как то?

Добавлено через 15 минут
хотя я вам немного запудрил мозги, можно и без перевода, поступить так:

Кликните здесь для просмотра всего текста
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
#define rus setlocale(LC_ALL,""); SetConsoleCP(1251); SetConsoleOutputCP(1251);
#define pause system("pause");
 
 
#include <iostream> 
using std::cin;
using std::cout;
using std::endl;
using std::ios;
 
#include <iomanip>
using std::setw;
 
#include <string>
using std::string;
 
#include <fstream>
using std::ofstream;
using std::ifstream;
 
#include <windows.h>
 
 
 
class ClientData
{
private:
char name[15];
char note[100];
 
public:
 
void set_name(string rhs) 
{
const char *temp = rhs.data();
int dlina = rhs.size();
dlina = (dlina < 15 ? dlina : 14);
strncpy (name, temp, dlina);
name[dlina] = '\0';
}
 
void set_note(string rhs) 
{
const char *temp = rhs.data();
int dlina = rhs.size();
dlina = (dlina < 100 ? dlina : 99);
strncpy (note, temp, dlina);
note[dlina] = '\0';
}
 
string get_name() const { return name; }
string get_note() const { return note; } 
 
ClientData(string nam = "", string not = "")
{
set_name(nam);
set_note(not);
}
 
};
 
 
 
int main()
{
rus;
 
ClientData temp;
 
string name;
string note;
 
cout << "Введите имя: ";
std::getline(cin, name);
temp.set_name(name);
 
cout << "Введите примечание: ";
std::getline(cin, note);
temp.set_note(note);
 
cout << "Имя: " << temp.get_name() << endl;
cout << "Примечание: " << temp.get_note() << endl;
 
pause;
return 0;
}



Но все равно, проблема с char есть, в этом виновата книга, потому что там в main используется массив char, за место string ну и.. Jupiter, потому что он за место того что бы мне вчера просто написать код в Учет времени, даты, считать часы, дни, месяцы и т.д начал давать какие то ссылки и т.д., мне пришлось рыться во всем это, что я не понимаю, напрягать мозг и в итоге во время написания программы моя внимательность была снижена.
 
Текущее время: 03:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru