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

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

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

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

15.03.2014, 23:33. Просмотров 2840. Ответов 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++
Надо написать программу, которая будет считывать строку, и заменять определенный символ(пользователь сам указывает, какой именно) на другой...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Logotipo
0 / 0 / 0
Регистрация: 15.03.2014
Сообщений: 15
17.03.2014, 14:42  [ТС] #16
Весь код, что я скинул - обработчик сообщений сервера. Каждое сообщение записывается в строку last_servermsg.
Я прологировал все строки, везде всё нормально, но после
C++
1
strncpy((char *)pch,(char *)namewithid,len2);
На выходе вместо - s(Mike_Vile[100]) получается - s(Mike_Vile[100] Advance Role Play, т.е. добавляется часть из предыдущего сообщения.
Я пробовал заменить strncpy на strcpy," Advance Role Play" пропадает, но после "- s(Mike_Vile[100]" ничего нет, хотя там должно быть продолжение сообщения.
0
Alex5
1052 / 715 / 105
Регистрация: 12.04.2010
Сообщений: 1,818
17.03.2014, 18:28 #17
Цитата Сообщение от Logotipo Посмотреть сообщение
Я пробовал заменить strncpy на strcpy," Advance Role Play" пропадает, но после "- s(Mike_Vile[100]" ничего нет, хотя там должно быть продолжение сообщения.
Это происходит, потому что strcpy() копирует также нулевой символ - признак конца строки.
Logotipo, Вы пробовали в учебнике по C или C++ найти параграф о строках?

C++
1
2
3
4
5
6
7
8
    char text[] = "Hello John. How are you?";
    cout << text << endl;
 
    strcpy( text+6, "Mike" );
    cout << text << endl;  // остаток строки "пропал"
 
    strncpy( text+6, "world", strlen("world") );
    cout << text << endl;  // теперь остаток строки "появился"
0
Logotipo
0 / 0 / 0
Регистрация: 15.03.2014
Сообщений: 15
18.03.2014, 17:17  [ТС] #18
Alex5, c strcpy понятно, а вот почему strncpy копирует кашу, не понятно
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.03.2014, 17:38 #19
Потому что strlen() выдаёт количество символов без '\0'.
0
Logotipo
0 / 0 / 0
Регистрация: 15.03.2014
Сообщений: 15
18.03.2014, 18:07  [ТС] #20
alsav22, есть ставить strlen()+1, то опять же пропадает конец строки.
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.03.2014, 18:25 #21
Цитата Сообщение от Logotipo Посмотреть сообщение
есть ставить strlen()+1, то опять же пропадает конец строки.
И правильно делает.
0
Alex5
1052 / 715 / 105
Регистрация: 12.04.2010
Сообщений: 1,818
18.03.2014, 20:06 #22
Цитата Сообщение от Logotipo Посмотреть сообщение
Alex5, c strcpy понятно, а вот почему strncpy копирует кашу, не понятно
Так может случиться, если при копировании мы сотрем нулевой символ. Тогда следующие байты будут рассматриваться, как продолжение строки (пока не встретится нулевой байт).
C++
1
2
3
4
5
    char text[] = "Hello Mike";
    cout << text << endl;
 
    strncpy( text+6, "world", strlen("world") );
    cout << text << endl;
0
Миниатюры
Замена символов в строке  
Logotipo
0 / 0 / 0
Регистрация: 15.03.2014
Сообщений: 15
19.03.2014, 20:13  [ТС] #23
Alex5, исправил, но код всё равно не работает.Из-за того, что name<namewithid. Следовательно код с strstr и ctrncpy работать не будет, а значит вопрос в 1 посте всё ещё актуален...
0
Alex5
1052 / 715 / 105
Регистрация: 12.04.2010
Сообщений: 1,818
20.03.2014, 12:19 #24
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Можно использовать string из стандартной библиотеки C++.
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include<string>
 
    std::string st = "Hello, world";
    std::cout << st << std::endl;
 
    std::string next = "[ new text ]";
    st.insert( 6,  next );
    std::cout << st << std::endl;
Добавлено через 4 минуты
class std::string
0
Logotipo
0 / 0 / 0
Регистрация: 15.03.2014
Сообщений: 15
22.03.2014, 21:16  [ТС] #25
Всем спасибо, сделал сам по иному способу)
 Комментарий модератора 
Какому?


Добавлено через 6 часов 27 минут
Разбил сообщение на 2 части: до name и после, затем вставил в текстовый массив первую часть, добавил namewithid, затем добавил оставшуюся часть.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2014, 21:16
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.03.2014, 21:16
Ответ Создать тему
Опции темы

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