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

String is not null terminated - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ как подключать системные файлы в визуал с++ 2012 http://www.cyberforum.ru/cpp-beginners/thread784320.html
подскажите пожалуйста как подключать системные файлы в визуал с++ 2012, например что бы написать прогармму для выключения компа
C++ Hello World! Доброго времени товарищи. Не могу никак найти тему. Где-то на этом форуме есть целая тема в которой предствалена огромная куча вариантов программы, которая выводит на экран надпись "Hello World!!!". Поделитесь ссылкой. http://www.cyberforum.ru/cpp-beginners/thread784300.html
C++ последовательность и запись исправте ошибки
Условия задания 1: Найти среднее арифметическое положительных элементов данной последовательности. Условия задания 2: В выходную последовательность записать только те числа, которые меньше суммы своих соседей (если первое число меньше второго, записываем первое число; если второе число меньше суммы первого и третьего числа, записываем второе число, если последнее меньше предпоследнего,...
C++ нужно исправить ошибку в коде) кому не тяжело
#include <iostream> using namespace std; template< class T > void insertSort(T* a, int size) { T tmp; for (int i = 1, j; i < size; ++i) // цикл проходов, i - номер прохода { tmp = a; for (j = i - 1; j >= 0 && a > tmp; --j) // поиск места элемента в готовой последовательности
C++ Удалить из матрицы А (7х5) все строки, сумма элементов которых четна, а из матрицы В (6х8) – строки, сумма элементов которых нечетна http://www.cyberforum.ru/cpp-beginners/thread784265.html
Удалить из матрицы А (7х5) все строки, сумма элементов которых четна, а из матрицы В (6х8) – строки, сумма элементов которых нечетна.
C++ Битовые операции (операция сложения двух целых положительных чисел) Пишу сюда, потому что времени остается мало, а сам решить никак не могу. Мне нужно написать программу программу, которая моделирует операцию сложения двух целых положительных числа (как ее выполняет компьютер), используя их внутреннее двоичное представление. Помогите пожалуйста. Добавлено через 1 час 52 минуты Решение задачи для тех кому интересно. Все таки смог решить ее.Есть небольшие... подробнее

Показать сообщение отдельно
kebal
9 / 9 / 0
Регистрация: 02.11.2012
Сообщений: 153

String is not null terminated - C++

12.02.2013, 00:22. Просмотров 1846. Ответов 9
Метки (Все метки)

Почему появляется ошибка в данном куске кода?

C++
1
2
3
4
5
6
7
8
9
10
11
String String::operator+ (const String &right)
{
    String temp;
    temp.length = this->length + right.length + 1;
    delete [] temp.sPtr;
    temp.sPtr = new char[temp.length];
    assert(sPtr != 0);
    strcpy_s(temp.sPtr, this->length + 1, this->sPtr);
    strcat_s(temp.sPtr, right.length + 1, right.sPtr);
    return temp;
}
Вылазит сообщение String is not null terminated.
Первая строка (strcpy) копирует включая нулевой символ, так как length + 1.
Вторая строка (strcat) находит этот нулевой символ и начинает оттуда копировать дальше, тоже включая нулевой символ.

Добавлено через 19 минут
Окей почитал доки, заменил предыдущий код на
C++
1
2
3
4
5
6
7
8
9
10
11
String String::operator+ (const String &right)
{
    String temp;
    temp.length = this->length + right.length;
    delete [] temp.sPtr;
    temp.sPtr = new char[temp.length + 1];
    assert(sPtr != 0);
    strcpy_s(temp.sPtr, temp.length + 1, this->sPtr);
    strcat_s(temp.sPtr, temp.length + 1, right.sPtr);
    return temp;
}
Но в результате тогда не работает следующий.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
const String &String::operator= (const String &right)
{
    if (&right != this)
    {
        delete [] sPtr;
        length = right.length;
        sPtr = new char[length + 1];
        assert(sPtr != 0);
                //вот эта следующая строка выдает Buffer is too small
        strcpy_s(sPtr, length + 1, right.sPtr);
    }
    return *this;
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru