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

Длина строки и нуль-терминатор - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вывод в текстовый файл http://www.cyberforum.ru/cpp-beginners/thread766777.html
Подскажите, пожему не получается вывести в файл все элементы двоичного дерева поиска, а только первый? void Book::Save() { FILE *f; char * path = "PhoneBook.txt"; if ( !(f = fopen(path, "w")) ) { cout << "Error occurred saving file...\n\n"; system("pause");
C++ Добавить в программу конструктор и деструктор написал программу с классами . как в нее добавить конструктор и деструктор? #include <iostrea m> using namespace std; #define N 3 class STUDENT { public: char FIO; int number; int usp; http://www.cyberforum.ru/cpp-beginners/thread766763.html
C++ Освоение gdi+
Первый вопрос. Есть созданная скажем из файла картинка в виде указателя на создланный Gdiplus::Image Как ее вывести не исходной, а черно-белой? В сторону - разумеется можно вручную. Вывести ее на отдельный hdc, с него считать по точке цвета, раскодировать, потом по формуле cgr=(R+G+B)/3 новый цвет (cgr,cgr,cgr), для загружаемых через winapi bmp я недавно так успешно делал, но наверно в gdi...
C++ Плохо работает ГСЧ
Подскажите, пожалуйста, как изменить программу, чтоб ГСЧ работал хорошо? Мне нужно, чтоб на каждой итерации у меня генерировался "хороший" вектор X, а оно мне генерирует пачками одинаковые. Как это можно обойти? И по коду подскажите -- где что поисправлять. Заранее весьма благодарен! // TPMVector.h #pragma once #include <vector> class TPMVector { public:
C++ Создайте два стека для символов http://www.cyberforum.ru/cpp-beginners/thread766748.html
Создайте два стека для символов. Вводите символы с клавиатуры. При этом латинские буквы должны попадать в первый стек, цифры – во второй, любые другие символы пропускаются. После ввода с клавиатуры эталонного символа (например #) выведите на экран содержимое обоих стеков.
C++ Dev C++ не работает с регистрами В ВС31 проблем не было. А вот DEv C++ не хочет работать с регистрами. Кто знает, в чем проблема? Вот код программы: #include <dos.h> #include <graphics.h> #include <stdio.h> #include <conio.h> REGS regs; подробнее

Показать сообщение отдельно
VladSharikov
 Аватар для VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
20.01.2013, 10:49     Длина строки и нуль-терминатор
Всем привет.
Выполняю небольшую лабораторную на строки, давно не занимался! что-то забыл, что-то и так не знал.
такой вопрос.
есть класс СТРОКА, у него есть конструктор с параметром, принимающий указатель на строку char* (или же есть метод Set, принимающий то же самое). внутри мне необходимо очистить что было, при необходимости, выделить новую память, записать туда содержимое параметра char*.
внимание вопрос: память под строку в классе надо выделять таким же размером или на один больше и вручную добавлять \0?

то есть
C++
1
2
3
4
5
String::String(const char *_Data) {
    Data = new char[strlen(_Data)+1]; 
    strcpy(Data, _Data);    
    strcat(Data, "\0");
}
или же, достаточно просто выделить место под строку такого же размера как и параметр и нуль-терминатор добавится сам/не нужен?
C++
1
2
3
4
String::String(const char *_Data) {
    Data = new char[strlen(_Data)]; 
    strcpy(Data, _Data);    
}
Вот

то же самое, например, с конструктором, принимающим символ.
нужно так?
C++
1
2
3
4
5
String::String(const char symbol) {
    Data = new char[2]; 
    Data[0] = symbol;
    strcat(Data, "\0");
}
или достаточно выделить место только под сам символ?
C++
1
2
3
4
String::String(const char symbol) {
    Data = new char[1]; 
    Data[0] = symbol;
}
и не добавлять вручную нуль-терминатор.
выручайте, пожалуйста

Добавлено через 1 минуту
вопрос в догонку.
считать длину моей строки (в классе) длиной с нуль-терминатором или без?

допустим вызвали конструктор с параметром char - символ один. считать длину строки = 1? или считать длину строки символ + нуль-терминатор = 2?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru