Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.94
Logotipo
0 / 0 / 0
Регистрация: 15.03.2014
Сообщений: 15
#1

Замена символов в строке - C++

15.03.2014, 23:33. Просмотров 3005. Ответов 24
Метки нет (Все метки)

Доброго времени суток.
Есть такой код.
C++
1
char text="hello world";
Как заменить слово "world" в этой строке на слово "Mike".
Искал в поисковых системах, нашёл функцию StringReplace и метод String.Replase.
Только вот при попытке их использовать выходит ошибка, мол необъявленный индефикатор.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2014, 23:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Замена символов в строке (C++):

Замена символов в строке - C++
Не получается сделать замену символов. Если в строке есть буква "H" мне нужно заменить её на "HOH". Вот код: #include <iostream> using...

Замена символов в строке - C++
Как заменить первый символ в строке "k" на "c" ? И последний "с" на "k" ? Вообще ума не приложу, помогите...

Замена символов в строке - C++
Помогите решить задачу. Дана строка. Нужно заменить символ "s" на "svb".

Замена символов в строке - C++
Всем здрасте! Вот тут есть задача: Дается 3 строки. Надо найти 2-ю строку в 1-ой и заменить ее на 3-ю. Мое решение не проходит по...

Замена символов в строке - C++
В общем, я не понимаю логики программирования, потому что я идиот :) Задание: Ввести строку, символ который заменить и символ на который...

Замена символов в строке - C++
Надо написать программу, которая будет считывать строку, и заменять определенный символ(пользователь сам указывает, какой именно) на другой...

24
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.03.2014, 23:50 #2
Цитата Сообщение от Logotipo Посмотреть сообщение
Есть такой код.
И он компилируется?
Может так?
C++
1
const char* text = "hello world";
0
uhx
60 / 60 / 6
Регистрация: 11.07.2013
Сообщений: 304
15.03.2014, 23:51 #3
http://www.cplusplus.com/reference/cstring/strstr/?kw=strstr
0
Logotipo
0 / 0 / 0
Регистрация: 15.03.2014
Сообщений: 15
15.03.2014, 23:52  [ТС] #4
alsav22, Это не суть, я для примера, так как же всё таки заменить?

Добавлено через 1 минуту
uhx, спасибо, попробую
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.03.2014, 23:54 #5
Цитата Сообщение от Logotipo Посмотреть сообщение
Это не суть
Это, как раз, суть.
Цитата Сообщение от Logotipo Посмотреть сообщение
я для примера
Зачем кривые примеры выкладывать? Или хотите получить такой же ответ?
C++
1
2
3
4
const char* text = "hello world";
cout << text << endl;
text = "hello Mike";
cout << text << endl;
Заменил?
0
Logotipo
0 / 0 / 0
Регистрация: 15.03.2014
Сообщений: 15
15.03.2014, 23:59  [ТС] #6
alsav22, нужно заменить кусок текста из str на текст из str2...
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.03.2014, 00:00 #7
Цитата Сообщение от Logotipo Посмотреть сообщение
нужно заменить кусок текста из str на текст из str2...
Код нормальный покажите, где это нужно сделать. Телепатов и ясновидящих здесь нет.
0
Logotipo
0 / 0 / 0
Регистрация: 15.03.2014
Сообщений: 15
16.03.2014, 00:13  [ТС] #8
C++
1
2
3
4
5
static char     last_servermsg[256];
char                  nickname[36];
сhar                  nickwithid[41];
getPlayerName(id,nickname);
_snprintf_s(nickwithid,sizeof(nickwithid),"%s[%d]",nickname,id);
Вот нужно в строке last_servermsg заменить nickname на nickwithid.
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.03.2014, 00:38 #9
Цитата Сообщение от Logotipo Посмотреть сообщение
Вот нужно в строке last_servermsg заменить nickname на nickwithid.
nickname находится в начале last_servermsg и после него нет никаких данных?
0
Logotipo
0 / 0 / 0
Регистрация: 15.03.2014
Сообщений: 15
16.03.2014, 19:48  [ТС] #10
alsav22, ну вот весь код целиком
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
uint8_t _declspec ( naked ) server_message_hook ( void )
{
    int     thismsg;
    DWORD   thiscolor;
 
    __asm mov thismsg, esi
    __asm mov thiscolor, eax
    thiscolor = ( thiscolor >> 8 ) | 0xFF000000;
 
    static char     last_servermsg[256];
    static DWORD    allow_show_again;
    if ( !set.anti_spam || cheat_state->_generic.cheat_panic_enabled
     || (strcmp(last_servermsg, (char *)thismsg) != NULL || GetTickCount() > allow_show_again) )
    {
        // might be a personal message by muted player - look for name in server message
        // ignore message, if name was found
        if ( set.anti_spam && g_iNumPlayersMuted > 0 )
        {
            int i, j;
            char *playerName = NULL;
            for ( i = 0, j = 0; i < SAMP_PLAYER_MAX && j < g_iNumPlayersMuted; i++ )
            {
                if ( g_bPlayerMuted[i] )
                {
                    playerName = (char*)getPlayerName(i);
 
                    if ( playerName == NULL )
                    {
                        // Player not connected anymore - remove player from muted list
                        g_bPlayerMuted[i] = false;
                        g_iNumPlayersMuted--;
                        continue;
                    }
                    else if ( strstr((char*)thismsg, playerName) != NULL )
                        goto ignoreThisServChatMsg;
                    j++;
                }
            }
        }
        snprintf(last_servermsg,256,"");
        LogChatbox(false,"%s 1",last_servermsg);
        LogChatbox(false,"%s 2",(char *)thismsg);
        strcpy_s(last_servermsg,(char *)thismsg);
        LogChatbox(false,"%s 3",last_servermsg);
        cheat_state->_generic.id = 1;
        if(cheat_state->_generic.id == 1){
            for(int i=0;i<1000;i++){
                char * name=(char *)getPlayerName(i);
            //  int len=strlen((char *)name);
                if(findstrinstr((char *)last_servermsg,(char *)name)){
                    char * namewithid[41];
                    snprintf((char *)namewithid,41,"%s[%d]",name,i);
                    int len2 = strlen((char *)namewithid);
                    char * pch; 
                    pch = strstr((char *)last_servermsg,name);
                    strncpy((char *)pch,(char *)namewithid,len2);
                }
            }
        }
На выходе я получаю какую-то кашу, например предыдущая строка "Добро пожаловать на Advance RolePlay!", а следующая
"- s {FFFFFF}(Mike_Vile[209] RolePlay!"
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.03.2014, 19:58 #11
Цитата Сообщение от Logotipo Посмотреть сообщение
ну вот весь код целиком
Ну и где здесь nickname и nickwithid?
0
Logotipo
0 / 0 / 0
Регистрация: 15.03.2014
Сообщений: 15
16.03.2014, 20:07  [ТС] #12
alsav22, nickwithid есть, а nickname переименована на name.
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.03.2014, 02:41 #13
Цитата Сообщение от Logotipo Посмотреть сообщение
nickwithid есть
В какой строке кода, в 10 посте?
0
Logotipo
0 / 0 / 0
Регистрация: 15.03.2014
Сообщений: 15
17.03.2014, 07:44  [ТС] #14
alsav22, 51 и 52, тоже переименовано, не заметил, извиняюсь.
0
Alex5
1086 / 747 / 116
Регистрация: 12.04.2010
Сообщений: 1,907
17.03.2014, 12:35 #15
Цитата Сообщение от Logotipo Посмотреть сообщение
например предыдущая строка "Добро пожаловать на Advance RolePlay!"
Какая строка? last_servermsg?
Цитата Сообщение от Logotipo Посмотреть сообщение
На выходе я получаю какую-то кашу, например
Можно точнее? Номер строки кода, где получается "какая-то каша"?
Цитата Сообщение от Logotipo Посмотреть сообщение
C++
1
2
pch = strstr((char *)last_servermsg,name);
 strncpy((char *)pch,(char *)namewithid,len2);
Например, можно с помощью отладчика посмотреть, что содержат переменные namewithid, name, last_servermsg. Перед и после выполнения strncpy().
0
17.03.2014, 12:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2014, 12:35
Привет! Вот еще темы с ответами:

Замена в строке символов - C++
&quot;Заменить в строке все вхождения 'abc' на 'xy', а 'mm' на '1234'&quot;. Буду благодарна за оказанную помощь. проблема в том,что я не знаю как...

Замена символов в строке - C++
Здравствуйте!!! Помогите пожалуйсто решить задачку. Есть текстовый файл. Необходимо: - открыть файл - скопировать содержание...

Замена символов в строке с while - C++
Здравствуйте. Подскажите,пожалуйста,по задаче: Используйте серийный оператор for для замены всех символов строки на X. Как эти символы...

Замена символов в строке - C++
Здравствуйте ,есть код ,который считывает строку и заменяет в ней определенные символы,выдаетмассу ошибок при компиляции ,помогите...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru