HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #2761  
Старый 25.04.2009, 16:12
draliokero
Познающий
Регистрация: 14.03.2009
Сообщений: 86
Провел на форуме:
385811

Репутация: 12
По умолчанию

Подскажите, как в строковой переменной заменить слово на нужный мне текст.
 
Ответить с цитированием

  #2762  
Старый 25.04.2009, 16:22
jawbreaker
Участник форума
Регистрация: 07.07.2008
Сообщений: 161
Провел на форуме:
1027635

Репутация: 234
По умолчанию

Цитата:
Сообщение от draliokero  
Подскажите, как в строковой переменной заменить слово на нужный мне текст.
Если нужно заменить все вхождения то так:
Код:
string s="BugblablaBugBug blabla BuBuggBug";
  string oldS="Bug";
  string newS="";
  int last=0,i;
  while (i=s.find(oldS,last),i!=string::npos)
    last=i+newS.size(),
    s.replace(i,oldS.size(),newS);
 
Ответить с цитированием

  #2763  
Старый 25.04.2009, 16:27
desTiny
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме:
3008839

Репутация: 1502


По умолчанию

Цитата:
Сообщение от jawbreaker  
Если нужно заменить все вхождения то так:
Код:
string s="BugblablaBugBug blabla BuBuggBug";
  string oldS="Bug";
  string newS="";
  int last=0,i;
  while (i=s.find(oldS,last),i!=string::npos)
    last=i+newS.size(),
    s.replace(i,oldS.size(),newS);
как ужасно нет бы КМП написать..)
__________________
Bedankt euch dafür bei euch selbst.

H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
 
Ответить с цитированием

  #2764  
Старый 25.04.2009, 16:31
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

Юзай поиск в инете
Для ленивых вот:
Код:
// Функция заменяет в строке Src подстроку Str1 на Str2

char* Replace(char* Src,char* Str1, char* Str2) 
{
    int        cStr1=0,cStr2=0,i;
    char*    buffer;
    buffer = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,lstrlen(Src)*2);
    while (Str1[cStr1]) cStr1++; // считаем размер
    while (Str2[cStr2]) cStr2++; // строк, можно и через lstrlen
    i = InStr(&Src[0],&Str1[0]);
    while(i != 0)
    {
        lstrcpyn(&buffer[lstrlen(buffer)],&Src[0],i);
        lstrcat(&buffer[0],&Str2[0]);
        lstrcpy(&Src[0],&Src[i+cStr1-1]);
        i = InStr(&Src[0],&Str1[0]);
    }
    lstrcat(&buffer[0],&Src[0]);
    lstrcpy(&Src[0],&buffer[0]);
    HeapFree(GetProcessHeap(),HEAP_NO_SERIALIZE,buffer);
    return Src;
}
 
Ответить с цитированием

  #2765  
Старый 25.04.2009, 16:35
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

PHP код:
    char *str;
    
cin >> str;

    
char *mm strcpy(str"free");

    
cout << mm
почему-то выводит "free"..
а где то, что я поместил в str?
 
Ответить с цитированием

  #2766  
Старый 25.04.2009, 16:51
razb
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме:
2868783

Репутация: 414


Отправить сообщение для razb с помощью ICQ
По умолчанию

Цитата:
а где то, что я поместил в str?
Дак ты же перезаписываешь то что находится в str
 
Ответить с цитированием

  #2767  
Старый 25.04.2009, 17:25
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

strcpy(str, "free");
помещение строки "free" по адресу str
если хочешь чтобы было и то и другое, то юзай strcat для сложения строк
 
Ответить с цитированием

  #2768  
Старый 25.04.2009, 18:20
Mosvit
Познающий
Регистрация: 05.03.2007
Сообщений: 99
Провел на форуме:
744734

Репутация: 44
По умолчанию

Цитата:
Сообщение от Kaimi  
Если не напутал, то вот поидее
Код:
#include <stdio.h>

void main()
{
FILE *in;
char ch;

in = fopen("in.txt", "r");

while(ch != EOF)
        {
         ch = fgetc(in);
         if((ch < 48 || ch > 57) && (ch < 65 || ch > 90) && (ch < 97 || ch > 122)) printf("%c", ch);
        }

fclose(in);
}
Да, спасибо! Всё работает. Только в начале не void main() походу а int main()

В условии цифры это какие-то коды символов получается?
А можно ещё как-нибудь сделать запись полученого результата в текстовый файл, а то русский шрифт полохо отображается в программе? =)

Последний раз редактировалось Mosvit; 25.04.2009 в 18:22..
 
Ответить с цитированием

  #2769  
Старый 25.04.2009, 19:14
Kaimi
Reservists Of Antichat - Level 6
Регистрация: 23.08.2007
Сообщений: 1,237
Провел на форуме:
18127311

Репутация: 1676


Отправить сообщение для Kaimi с помощью ICQ
По умолчанию

Напиши в консоле >> file.txt или в коде допиши запись в другой файл.
Зачем писать int main если функция ничего не возвращает?
 
Ответить с цитированием

  #2770  
Старый 25.04.2009, 19:24
desTiny
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме:
3008839

Репутация: 1502


По умолчанию

Цитата:
Сообщение от Kaimi  
Если не напутал, то вот поидее
Код:
#include <stdio.h>

void main()
{
FILE *in;
char ch;

in = fopen("in.txt", "r");

while(ch != EOF)
        {
         ch = fgetc(in);
         if((ch < 48 || ch > 57) && (ch < 65 || ch > 90) && (ch < 97 || ch > 122)) printf("%c", ch);
        }

fclose(in);
}
Ну вашу ж мать... ну кто так делает? и как так вообще можно? какого хрена оно вообще работает.. это ж..
короче, по пунктам:
1)юзинг неинициализированной переменной в ch
2)в случае достижения eof-а всё равно пытаемся что-то вывести
3)ну вот обязательно надо всё не по человечески сделать: вот что тебя сподвигло на написание "<48" вместо "<'0'"?

фикс этого кода, убивающий критические баги 1 и 2:
Код:
#include <stdio.h>

void main()
{
FILE *in;
char ch;

in = fopen("in.txt", "r");

while((ch = fgetc(in)) != EOF)
        {
         if((ch < 48 || ch > 57) && (ch < 65 || ch > 90) && (ch < 97 || ch > 122)) printf("%c", ch);
        }

fclose(in);
}
__________________
Bedankt euch dafür bei euch selbst.

H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часто задаваемые вопросы по MySQL Серый PHP 5 28.12.2006 18:26
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Сценарии/CMF/СMS 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ