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

Работа с динамическими строками - C++

Восстановить пароль Регистрация
 
Юлия611
0 / 0 / 0
Регистрация: 10.05.2011
Сообщений: 12
02.01.2014, 20:26     Работа с динамическими строками #1
Все здравствуйте. Есть вот такое задание к нему программа. Среда разработки - VS 2005. Компиляция проходит без ошибок, однако после ввода строки возникает ошибка: The variable 'i' is being used without being defined в строке str[i]='\0'; в void String::set(). Помогите, пожалуйста, устранить ее. Заранее благодарю

Задание. Пользовательский класс String должен содержать необходимые элементы-данные, которые создаются в динамической области памяти.
Конструктор для создания строк: String (…);
Деструктор: ~String();
Метод ввода исходной строки: Set();
Метод печати: void print(…);
Код методов – вне пространства определения класса. Программа иллюстрирует прямой и косвенный способы обращения к методам.
Ввести с клавиатуры строку символов S1. Признак окончания ввода строки – нажатие клавиши «Ввод». Программа должна содержать перегруженную операцию «=», использование которой скопирует S1 в S2 .
Исходную и преобразованную строки вывести в файл. В программе необходимо использовать стоковые и файловые потоки.

Вариант задания: Если длина L=10, то удаляются все A..Z.



#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <istream>
#include <fstream>
#include <conio.h>
using namespace std;

///////////////////////////////////////
const int MAX=255;

class String
{
private:
char *str;
char *strend;
public:
String();
void set();//metod vvoda ish. stroki
void print();//metod pechati
void run();//metod vipolneniya zadachi
void printend();//metod pechati strend
String& operator= (String&);
~String();
};
//-------------------------------------
String::String()
{
str = new char [MAX];
str[0]='\0';
strend = new char [MAX];
strend[0]='\0';
//cout << "Constructor!";
}
//-------------------------------------
String& String::operator= (String&ss)//s2=s1
{
strcpy(strend, ss.str);
return *this;
}
//-------------------------------------
String::~String()
{
delete []str;
delete []strend;
//cout << "Destructor!";
}
//-------------------------------------
void String::run()
{
unsigned int i=0, j=0;
char *ss;
ss = new char [MAX];
ss[0]='\0';

if(strlen(str)==10)
{
for(i=0;i<10;i++)
{
if ( (str[i]<'A') || (str[i]>'Z') )
{
ss[j]=str[i];
j++;
}
}

ss[j]='\0';
str[0]='\0';

strcpy(str,ss);


cout << "\nStroka bez \"A\"...\"Z\": ";
}
else
{
cout << "\nStroka s \"A\"...\"Z\": ";
}
}
//-------------------------------------
void String::set()
{
int i;
cout << "Vvedite stroku: ";
char *stroka = new char [MAX];
stroka[0]='\0';
cin.getline(stroka,MAX);
for(unsigned int i=0;i<strlen(stroka);i++)
{
str[i] = stroka[i];
}
str[i]='\0';
delete []stroka;
}
//-------------------------------------
void String:rint()
{
ofstream file("file.txt", ios::app);
for (unsigned int i=0; i<strlen(str); i++)
{
cout << str[i];
}


file << endl;
for (int i=0; i<strlen(str); i++)
{
file << str[i];
}
}
//-------------------------------------
void String:rintend()
{
cout << "\nSkopirovannaya stroka: ";

for (unsigned int i=0; i<strlen(strend); i++)
{
cout << strend[i];
}
}
//////////////////////////////////////////////
void main(void)
{
ofstream file("file.txt", ios::out);

String s1,s2;

s1.set();
s1.print();
s1.run();
s1.print();

s2=s1;

s2.printend();

cout << "\n" << endl;

String *s3,*s4;
s3=new String; s4=new String;
s3->set();
s3->print();
s3->run();
s3->print();

*s4=*s3;

s4->printend();

cout << "\n" << endl;

getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2014, 20:26     Работа с динамическими строками
Посмотрите здесь:

C++ Работа с динамическими массивами
Работа с динамическими структурами данных C++
C++ Работа с динамическими массивами
Создание и работа с динамическими библиотеками C++
C++ работа с динамическими массивами
C++ Написать программу работу с динамическими строками
C++ Работа с динамическими массивами
C++ Выделение и очищение памяти при работе с динамическими строками

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.01.2014, 21:13     Работа с динамическими строками #2
Цитата Сообщение от Юлия611 Посмотреть сообщение
Компиляция проходит без ошибок, однако после ввода строки возникает ошибка: The variable 'i' is being used without being defined в строке str[i]='\0'; в void String::set(). Помогите, пожалуйста, устранить ее.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void String::set()
{
     cout << "Vvedite stroku: ";
     char *stroka = new char [MAX];
     //stroka[0] = '\0';
     cin.getline(stroka, MAX);
     unsigned int i = 0;
     for( ; i < strlen(stroka); i++)
     {
        str[i] = stroka[i];
     }
     str[i] = '\0';
     delete []stroka;
}
Юлия611
0 / 0 / 0
Регистрация: 10.05.2011
Сообщений: 12
02.01.2014, 21:17  [ТС]     Работа с динамическими строками #3
благодарю
Yandex
Объявления
02.01.2014, 21:17     Работа с динамическими строками
Ответ Создать тему
Опции темы

Текущее время: 20:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru