17 / 17 / 3
Регистрация: 05.10.2009
Сообщений: 172
1

В паскале это называется String

28.10.2009, 11:32. Показов 1991. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Чем больше я изучаю С, тем больше понимаю, что этот язык придумали извращенцы.

В общем это... в паскале это делается так:
Pascal
1
2
Z String;
Z := "Тра-ля-ля";
И ВСЁ!!! НИКАКОГО ГЕМОРРОЯ!!! Дальше я могу с этой переменно делать что угодно и как угодно. Ну в пределах возможности данного типа переменной конечно.

Блин! Как мне получить такую же переменную (которая просто хранит строку текста) в этом извращенном языке С ???

Как я понял там должна быть какая-то непонятного вида конструкция типа:
C++
1
char str1[10];
и как мне к этому потом пришить переменную и как с этой переменной потом работать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.10.2009, 11:32
Ответы с готовыми решениями:

Что это может быть? или как это называется? Меня взломали!
Доброго дня всем, мне по майл.ру.агент отправили сообщением так: Витя Гасай (08.03.2011 23:29)...

как называется это?
Добрый день друзья, я новичок в вэб и хочу спросить как называется это? смотрите ниже Спасибо

Как это называется?
На данный момент делаю сайты по такому принципу. Создаю index, делаю для него стиль. Что бы создать...

Как это называется?
Добрый день. Когда например YouTube загружается, виднеется как бы предосмотр, как это правильно...

18
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
28.10.2009, 11:34 2
а разве нельзя написать так
C++
1
string s="lkzsskaldhf";
0
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
28.10.2009, 11:35 3
переходи на С++ и используй std::string и никакого геморроя
или в С
Код
char *str = "SomeString"; // правда с памятью потом в ручную работать, если длина изментся
0
17 / 17 / 3
Регистрация: 05.10.2009
Сообщений: 172
28.10.2009, 11:36  [ТС] 4
Цитата Сообщение от mamedovvms Посмотреть сообщение
а разве нельзя написать так
C++
1
string s="lkzsskaldhf";
Грит что не знает что такое string.

Мей би чтобы он узнал ему надо че нить подключить? Ну типа я имею ввиду вот это: #include <vcl.h>
0
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
28.10.2009, 11:39 5
Цитата Сообщение от Fermion Посмотреть сообщение
Грит что не знает что такое string.

Мей би чтобы он узнал ему надо че нить подключить? Ну типа я имею ввиду вот это: #include <vcl.h>
если в билдере работаешь, так там тоже самое что и в делфи - те же классы по работе со строкой.
0
17 / 17 / 3
Регистрация: 05.10.2009
Сообщений: 172
28.10.2009, 11:41  [ТС] 6
Цитата Сообщение от oxotnik Посмотреть сообщение
переходи на С++ и используй std::string и никакого геморроя
А можно для меня, как для ламера, поподробнее с этого момента? Тип переменно как называется?

Цитата Сообщение от oxotnik Посмотреть сообщение
правда с памятью потом в ручную работать, если длина изментся[/CODE]
Вот этого мне хотелось бы меньше всего.
0
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
28.10.2009, 11:50 7
Цитата Сообщение от Fermion Посмотреть сообщение
А можно для меня, как для ламера, поподробнее с этого момента? Тип переменно как называется?
Код
#include <string>
int main ()
{
   std::string str = "some string";
   str+= " some string2";
   return 0;
}
это класс-контейнер для работы со строками, это не встроенный тип
1
425 / 229 / 87
Регистрация: 25.03.2009
Сообщений: 744
28.10.2009, 11:56 8
в общем если учишься программировать наверно лучше будет visual C++ 2008 prof edition хотя для начала и express edition пойдёт там создашь консольный проект , как тебе писали подключаешь #include <string> , string это класс определённый в пространстве имён std:: чтобы объявить объект этого класса напишешь string s ; можешь сразу его инициализировать с помощью конструктора типа string s("lala"); дальше с помощью методов класса string можешь работать с этой строкой s.length() - длина этой строки и так далее насчёт методов загляни сюда www.cplusplus.com
0
17 / 17 / 3
Регистрация: 05.10.2009
Сообщений: 172
28.10.2009, 11:57  [ТС] 9
Цитата Сообщение от oxotnik Посмотреть сообщение
Код
#include <string>
int main ()
{
   std::string str = "some string";
   str+= " some string2";
   return 0;
}
это класс-контейнер для работы со строками, это не встроенный тип
А дальше то что с этим делать? Мне нужна переменная типа string. К примеру: Z= 'Hello Word'; Как мне терь к этому прикрутить Z ? Как её описать?
0
14 / 14 / 0
Регистрация: 08.07.2009
Сообщений: 61
28.10.2009, 11:59 10
Fermion, str - это и есть Z,
C++
1
std::string Z = "Hello world";
видимо лучше послушать совет Андрейки.

для удобства
C++
1
using namespace std;
в начале файла-кода, чтоб не писать каждый раз
C++
1
std::
при работе с строкой
1
17 / 17 / 3
Регистрация: 05.10.2009
Сообщений: 172
28.10.2009, 12:29  [ТС] 11
Цитата Сообщение от blackswan Посмотреть сообщение
Fermion, str - это и есть Z,
Всё.. спасибо... разобрался.



В общем в начале проги вот это:
Цитата Сообщение от oxotnik Посмотреть сообщение
Код
#include <string>
int main ()
{
   std::string str = "some string";
   str+= " some string2";
   return 0;
}
А перед объявлением переменной вот это:
Цитата Сообщение от blackswan Посмотреть сообщение
C++
1
std::string Z = "Hello world";
Так всё работает. Спасибо всем ещё раз!
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
29.10.2009, 03:16 12
Цитата Сообщение от Fermion
В общем это... в паскале это делается так:
В паскале это встроено прямо в язык, а C сделан по принципу: ядро маленькое, а всё остальное подключается
когда какая-та из технологий устаревает, её просто переписывают, не меняя языка (его реализации в компиляторе, так как достаточно переписать библиотеку или просто пересобрать её, заменив одну функцию)

C
1
    char s[100] = "abcd";
C
1
2
3
4
5
#include <stdio.h>
 
    char s[100];
 
    sprintf(s, "abcd");
C
1
2
3
4
5
#include <string.h>
 
    char s[100];
 
    strcpy(s, "abcd");
C
1
2
3
4
5
6
7
    char s[100];
 
    s[0] = 'a';
    s[1] = 'b';
    s[2] = 'c';
    s[3] = 'd';
    s[4] = '\0';
паскалевские знания лучше отбросить
0
17 / 17 / 3
Регистрация: 05.10.2009
Сообщений: 172
29.10.2009, 19:31  [ТС] 13
Цитата Сообщение от accept Посмотреть сообщение
C
1
    char s[100] = "abcd";
C
1
2
3
4
5
#include <stdio.h>
 
    char s[100];
 
    sprintf(s, "abcd");
C
1
2
3
4
5
#include <string.h>
 
    char s[100];
 
    strcpy(s, "abcd");
C
1
2
3
4
5
6
7
    char s[100];
 
    s[0] = 'a';
    s[1] = 'b';
    s[2] = 'c';
    s[3] = 'd';
    s[4] = '\0';
А переменная-то где?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
30.10.2009, 05:55 14
массив будет работать как переменная во всех контекстах, если тебя не устраивает его дополнительный размер, на этот счёт есть функции выделения памяти ровно столько, сколько надо
0
17 / 17 / 3
Регистрация: 05.10.2009
Сообщений: 172
30.10.2009, 22:13  [ТС] 15
Цитата Сообщение от accept Посмотреть сообщение
массив будет работать как переменная во всех контекстах
Это КАК?

Блин.. не понимаю. Давайте на конкретном примере. Вот программка на Дельфи... она работает:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var
z :String;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
z := 'Hello World';
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
if z = 'Hello World' then z := 'Привет Мир'
else z := 'Hello World';
Label1.Caption := z;
end;
А теперь объясните мне тупому КАК я могу на С++Builder полю Label1->Caption присвоить массив? И как и с чем я должен сравнивать массив? Как реализовать такую же программу на C++ ?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
02.11.2009, 01:55 16
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
#include <stdio.h>
#include <string.h>
 
void Input(char *l);
void Change(char *l);
void Print(char *l);
 
main()
{
    char msg[100];
    
    Input(msg);
    
    Change(msg);
    
    Print(msg);
    
    return 0;
}
 
void Input(char *l)
{
    sprintf(l, "Hello, World!");
}
 
void Change(char *l)
{
    const char *m = "Привет, Мир!"; 
    
    if (strcmp(l, m))
        sprintf(l, "%s", m);
}
 
void Print(char *l)
{
    printf("%s" "\n", l);
}
для C++ юзается string

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
#include <iostream>
 
using namespace std;
 
int main(void)
{
    string s;
    
    s = "Hello";
    
    if (s == "Hello")
        s = "Привет";
        
    cout << s << endl;
    
    return 0;
}
операции сравнения и присваивания просто перегружены (то есть, вместо операции выполняется функция, которая что-то делает)

Добавлено через 5 минут
Цитата Сообщение от Fermion
полю Label1->Caption присвоить массив?
strcpy, если Label1->Caption - строка для символов, а не структура какая-нибудь
0
22 / 20 / 5
Регистрация: 11.02.2009
Сообщений: 383
02.11.2009, 02:08 17
в общем в строке
C++
1
char s[100];
создается массив из 100 элементов типа char (один символ) благодаря уневирсальности языка (он в какойто степени отличает char от остальных типов) мы можем написать
C++
1
s= "abcd";
этим самым заняв 4 ячейки памяти из ста в массиве s. Если не было бы этой уневирсальности, пришлось бы в каждую ячейку вбивать по символу:
C++
1
2
3
4
s[0]='a';
s[1]='b';
s[2]='c';
s[3]='d';
все легко и просто))
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
02.11.2009, 10:18 18
но только при инициализации, при инициализации символы скопируются в массив, а без инициализации будет попытка присвоить массиву адрес строки "abcd"
все строки сохраняются в статической области памяти, их можно копировать из этой области в массив с помощью strcpy, от начала массива можно легко смещаться
C
1
    strcpy(s+3, "abcd");
скопирует в массив s через три символа (то есть перешагнёт через три первых символа)
0
22 / 20 / 5
Регистрация: 11.02.2009
Сообщений: 383
02.11.2009, 11:12 19
ну да... это уже детали)) хоть и важные...
0
02.11.2009, 11:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.11.2009, 11:12
Помогаю со студенческими работами здесь

Как это называется?
1. Подскажите, как называется, когда например скрипт накручивает лайки, предварительно взяв себе...

Как это называется?
Здравствуйте. Очень часто встречаю в интернете подобные строки кода : Console.WriteLine(&quot;My...

Как это называется?
С. Прата, листинг 8.1 // использование встроенной функции #include &lt;iostream&gt; inline double...

Как это называется?
Как называется вот такое описание XML, взято из документации ISPManager, и где про это можно...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru