powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа со строками.
10 сообщений из 10, страница 1 из 1
Работа со строками.
    #34553756
K0sinus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите пожалуйста новичку разобраться со строками.Задача такая:
Есть форма.На ней поле Мемо1,поле Едит и пустое поле Мемо2.В Мемо1 вводят любой текст,потом в едит1 пишут один символ ,нажимают кнопку, и в поле Мемо2 копируется этот текст,но с закавыченным везде этим символом.
Я уже сделал эту прогу на дельфи,в принципе всё просто.Но в Си не получается...Помогите пожалуйста!
...
Рейтинг: 0 / 0
Работа со строками.
    #34553834
Jevgeniy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всмысле мемо поле? разве есть такой элемент управления?? Или мемо поле в таблице?
...
Рейтинг: 0 / 0
Работа со строками.
    #34553841
K0sinus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Memo-текстовое поле...Имеется ввиду Borland C++ Builder 6.
Но не в нём суть.Можеть быть и другой элемент...ПОмогите пожалуйста составить цикл обработки строки.
...
Рейтинг: 0 / 0
Работа со строками.
    #34554037
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jevgeniy wrote:

> Всмысле мемо поле? разве есть такой элемент управления?? Или мемо поле в
> таблице?
TMemo, как я понимаю. :)

K0sinus
>Я уже сделал эту прогу на дельфи,в принципе всё просто.Но в Си не получается...
>Помогите пожалуйста!
а в чем конкретно проблема?


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
void (char* dest, const char* src){
        for(;*src; src++){
                char c = *src;
                if (c == 'a'){
                        *(dest++) = '\"';
                        *(dest++) = c;
                        *(dest++) = '\"';
                }
                else
                        *(dest++) = c;                  
        }
        *dest =  0 ;
}

Само собой, dest должен указывать на буфер достаточного размера, чтобы вместить строку достаточного размера.

Или можно использовать std::string. (Если это C++)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Работа со строками.
    #34554075
K0sinus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не понял,что сие значит...Компилятор ругается на звёздочки...
...
Рейтинг: 0 / 0
Работа со строками.
    #34554076
K0sinus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если не сложно,напишите пожалуйста полностью событие кнопки OnClick,которое копирует Мемо1 в Мемо2 с закавыченным везде символом,который указывается в Едит1.
...
Рейтинг: 0 / 0
Работа со строками.
    #34554080
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K0sinus wrote:

> Не понял,что сие значит...Компилятор ругается на звёздочки...

А теперь?:
Код: 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.
#include <stdio.h>

void quote(char* dest, const char* src){
    for(;*src; src++){
        char c = *src;
        if (c == 'a'){
            *(dest++) = '\"';
            *(dest++) = c;
            *(dest++) = '\"';
        }
        else
            *(dest++) = c;
    }
    *(dest++) =  0 ;
}

int main(int argc, char** argv){
    const char* str = "asdfasdfasdfasdf";
    char buf[ 65536 ];
    quote(buf, str);
    printf("%s\n", buf);
    return  0 ;
}

У меня компилится как C и как C++ код.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Работа со строками.
    #34554085
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K0sinus wrote:

> Если не сложно,напишите пожалуйста полностью событие кнопки
> OnClick,которое копирует Мемо1 в Мемо2 с закавыченным везде
> символом,который указывается в Едит1.

Я билдером не пользуюсь. Вариант, который привел - под C++.
Там должен быть свой класс - аналог паскалевской строки, которым есть смысл
пользоваться вот "более читаемый" вариант с std::string.

Код: 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.
#include <stdio.h>
#include <string>

void quote(std::string& dest, const std::string& src){
    dest.clear();
    for (size_t i =  0 ; i < src.length(); i++){
        char c = src[i];
        if (c == 'a'){
            dest += '\"';
            dest += c;
            dest += '\"';
        }
        else
            dest += c;
    }
}

int main(int argc, char** argv){
    std::string src("asdfasdfasdfasdf");
    std::string dest;
    quote(dest, src);
    printf("%s\n", dest.c_str());
    return  0 ;
}
Вопросы?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Работа со строками.
    #34554347
У
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У
Гость
AnsiString юзай
Точно так же, как в Delphi
...
Рейтинг: 0 / 0
Работа со строками.
    #34555127
K0sinus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем большое спасибо!Я всё таки сделал по-своему....У меня вышло так:

char a=Edit1->Text[1];
Memo2->Clear();
for(int i=0;i<Memo1->Lines->Count;i++){
AnsiString S=Memo1->Lines->Strings ;
for(int j=1;j<=S.Length();j++){
if(S[j]==a){
S.Insert("'",j);
S.Insert("'",j+2);
j+=2;
}
}
Memo2->Lines->Add(S);
}
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа со строками.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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