powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Программка для работы со строками
8 сообщений из 8, страница 1 из 1
Программка для работы со строками
    #32558142
anais
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
надо написать учебную программку, которая работает со строками - переставляет их местами и т.д. требование - использовать классы.
в С++ не писала, только в С, но по-моему тут тоже нет типа данных string, a надо использовать - массив чар.

никак не могу написать даже конструктор класса - не получается передать значение. где тут баг?
Код: plaintext
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.
#include <stdio.h>
#include <conio.h>
#include <string.h>

class CStr
{
   private:
	char st[];

   public:
       //	void c (CStr *s); //Є®ЇЁагҐв бва®Єг ў бва®Єг
       //	void cat (CStr *s); //®ЎкҐ¤Ё­Ґ­ЁҐ бва®Є
       //	void cmp (CStr *s); //ба ў­Ёў Ґв бва®ЄЁ
       //	void lng (); //¤«Ё­  бва®ЄЁ
       //	void output(); //ўлў®¤ ­  нЄа ­
	CStr (char st[]);
};


CStr :: CStr (char a[])
{
 strcpy(st,a);
 int i;
  for (i=0;i<strlen(st);i++)
  {
   printf("%s", st[i]);
};
};

void main()
{
	CStr a("строка");
		getch();
};
...
Рейтинг: 0 / 0
Программка для работы со строками
    #32558156
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
продолжай сюда, потом выложешь :)

Код: plaintext
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.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
#include <stdio.h>
#include <iostream.h>
#include <string.h>


class String
{
    char *str;  
	public:

	String() : str(0)	{};

	String(const char *s)
	{
	  if(!*s)
	    str = new char('\0');
	 else
	 {
	    str = new char [ strlen(str) + 1 ];
	 	strcpy (str, s);
	 }
	}

	String(String &s)
	{
	  if(!s.str)  str = s.str;
	  if(s.str)
	  {
		  str = new char [ strlen(s.str) + 1];
		  strcpy(str, s.str);
	  }
	}

	~String()
	{
	  delete [] str;
	}

	int eq(const char *s) const
	{
	  if(!str || !s) return 0;
	  return !strcmp(str,s);
	}

	int eq(String &s) const
	{
	  return eq(s.str);
	}

   int indexOf(char ch, unsigned int fromIndex = 0) const
   {
	   int length = str ? strlen(str) : 0;
	   for( int index = fromIndex; index < length; ++index)
	   {
	     if(ch==str[index]) return index;
	   }
	   return -1;
   }
   
   int indexOf(const char *s, unsigned int fromIndex = 0) const
   {
       if (!str) 
		   return -1;
	   int length = strlen(str);

	   if(length < fromIndex) 
		   return -1;

	   char *p = strstr(str + fromIndex, s);
	   if(!p)
		   return -1;

	   return str-p;
   }
   
   int indexOf(String &s, unsigned int fromIndex = 0) const
   {
      return indexOf(s.str, fromIndex);
   }

   int length(void) const
   {
      return str ? strlen(str) : -1;
   }

   String &operator +(const char *s)
   {
	  if(!s || *s) return *this;

	  if(str) 
	  {
	    if(*str) 
		{
		   delete str; str = 0;
		} else
		{
		   char *p = new char [ strlen(str) + strlen(s) + 1 ];
		   strcpy (p, str);
		   strcat (p, s);
		   delete str;
		   str = p;
		}
	  }
	  if(!str)
	  {
	     str = new char [ strlen(s) + 1];
		 strcpy(str,s);
	  }
      return *this;
   }

   String &operator +(String &s)
   {
	  return (*this) + s.str;
   } 

//   String operator+(const char *s)
//   {
//	 if(s) 
//     int length = strlen(s)
//   }
};



int main(int argc, char *argv[])
{

  String s1;
  String s2("s");
  String s3(s2);

  String s4("");
  String s5(s4);
  
  cout << "s5.eq(\"s\"); "  << s5.eq("s")   << endl << flush;
  cout << "s5.eq(\"\"); "   << s5.eq("")    << endl << flush;
  cout << "s5.eq( s5); "    << s5.eq(s5)    << endl << flush;
  cout << "s5.eq( s4); "    << s5.eq(s4)    << endl << flush;
  cout << "s5.eq( s2); "    << s5.eq(s2)    << endl << flush;
  cout << "s5.length(); "   << s5.length()  << endl << flush;
  cout << "s2.length(); "   << s2.length()  << endl << flush;
  cout << "s2.indexOf(\"s\"); "   << s2.indexOf("s")   << endl << flush;
  cout << "s2.indexOf(\"ss\"); "  << s2.indexOf("ss")  << endl << flush;
  cout << "s2.indexOf(\"s\"); "   << s2.indexOf("")    << endl << flush;
  cout << "s2.indexOf(\"z\"); "   << s2.indexOf("z")   << endl << flush;
  cout << "s2.indexOf(s2); "      << s2.indexOf(s2)    << endl << flush;
  cout << "s2.indexOf(s2, 1); "   << s2.indexOf(s2, 1) << endl << flush;
  cout << "s2.indexOf(s2, 5); "   << s2.indexOf(s2, 5) << endl << flush;

  return 0;
}
...
Рейтинг: 0 / 0
Программка для работы со строками
    #32558183
anais
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а проще никак?.. попримитивнее
...
Рейтинг: 0 / 0
Программка для работы со строками
    #32558194
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anaisтребование - использовать классы.

может это требование не подразумевает _написание_ классов? а только _использование_?
тогда std::string std::vector
...
Рейтинг: 0 / 0
Программка для работы со строками
    #32558198
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ты отформатируй в красивом редакторе, будет примитивно.
...
Рейтинг: 0 / 0
Программка для работы со строками
    #32558214
anais
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скажи, а что означает запись

String() : str(0) {}; //??????????

return !strcmp(str,s); // возвращает и дальще отрицание.. не понимаю

похоже надо начать читать как его там.. Страустр.... не помню..
можешь вкраце написать что и как функция делает.

Буду благодарной девушкой :)
...
Рейтинг: 0 / 0
Программка для работы со строками
    #32558230
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Страуструпа...


String() : str(0) {}; -- поле str в классе String инициализируется нулем

return !strcmp(str,s) -- strcpm() возврашает 0, если строки равны, !strcmp() -- онтицание от strcmp(), возврашает 1, если строки равны
...
Рейтинг: 0 / 0
Программка для работы со строками
    #32558249
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
делает то же самое, что такая же функция в жабе. т.е. нужно открыть доку от жабы и посмотреть ф-ции класса String.


это я из жабы (j2ee) делал кобру(corba)[
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Программка для работы со строками
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]