ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

25.04.2009, 16:12
|
|
Познающий
Регистрация: 14.03.2009
Сообщений: 86
Провел на форуме: 385811
Репутация:
12
|
|
Подскажите, как в строковой переменной заменить слово на нужный мне текст.
|
|
|

25.04.2009, 16:22
|
|
Участник форума
Регистрация: 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);
|
|
|

25.04.2009, 16:27
|
|
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
|
|
|

25.04.2009, 16:31
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
Юзай поиск в инете
Для ленивых вот:
Код:
// Функция заменяет в строке 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;
}
|
|
|

25.04.2009, 16:35
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме: 2209675
Репутация:
537
|
|
PHP код:
char *str;
cin >> str;
char *mm = strcpy(str, "free");
cout << mm;
почему-то выводит "free"..
а где то, что я поместил в str?
|
|
|

25.04.2009, 16:51
|
|
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме: 2868783
Репутация:
414
|
|
а где то, что я поместил в str?
Дак ты же перезаписываешь то что находится в str
|
|
|

25.04.2009, 17:25
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
strcpy(str, "free");
помещение строки "free" по адресу str
если хочешь чтобы было и то и другое, то юзай strcat для сложения строк
|
|
|

25.04.2009, 18:20
|
|
Познающий
Регистрация: 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..
|
|
|

25.04.2009, 19:14
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.08.2007
Сообщений: 1,237
Провел на форуме: 18127311
Репутация:
1676
|
|
Напиши в консоле >> file.txt или в коде допиши запись в другой файл.
Зачем писать int main если функция ничего не возвращает?
|
|
|

25.04.2009, 19:24
|
|
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
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|