Как добавить char в string c
Перейти к содержимому

Как добавить char в string c

  • автор:

Добавить символ(строку) в char*

Второе задание решил выполнять таким образом: Поместить в char dop первые num символов строки source, а потом с помощью конкатенации сложить dest и dop. Однако это не получается, так как появляется ошибка.

#include #include using namespace std; int str_len (char* s) < int x = 1; int len = 0; while(x) < if (s[len] == 0) else > return len; > char* str_n_cat(char* dest, char* source, unsigned int num) < int count = 0; char dop[num]; if (str_len(source) >= num) < while(count < num) < dop[count] = dop[count] + source[count]; count++; >dest = dest + dop; > > int main()

Вставка символа в строку

Author24 — интернет-сервис помощи студентам

Такая проблема, нужно вставить пробел в строку через каждых 2 символа.

1 2 3 4 5 6 7 8 9 10 11 12
char * ResText = "UPYHAKDOOB"; char * ResText1 = malloc(20 * sizeof(char)); for(size_t i = 0; i  strlen(ResText); ++i) { ResText1 += ResText[i++]; if (i  strlen(ResText)) { ResText1 += ResText[i]; ResText1 += ' '; } }

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Дан символ C и строки S, S0. Перед каждым вхождением символа C в строку S вставить строку S0
Задание :Дан символ C и строки S, S0. Перед каждым вхождением символа C в строку S .

Дан символ C и строки S, S0. После каждого вхождения символа C в строку S вставить строку S0
Дан символ C и строки S, S0. После каждого вхождения символа C в строку S вставить строку S0. .

Считать строку, и найти число вхождений символа в эту строку (с использованием strchr)
Почему не работает, компилятор ошибок не ловит, при запуске вылетает с ошибкой. Программа должна.

Эксперт функциональных языков программированияЭксперт Python

36610 / 20336 / 4223
Регистрация: 12.02.2012
Сообщений: 33,662
Записей в блоге: 13

Лучший ответ

Сообщение было отмечено Bogdan111999 как решение

Решение

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
#include #include #include /* run this program using the console pauser or add your own getch, system("pause") or input loop */ char *insBlanc(char *Stri) { int n=strlen(Stri); char *r=(char *) calloc(2*n,1); int i,j=0,k=0; for (i=0;in;i++) { r[j++]=Stri[i]; k++; if (k==2) { r[j++]=' '; k=0; } } r=realloc(r,j+1); return r; } int main(int argc, char *argv[]) { char *S="qwertyuiop"; char *R; printf("%s\n",S); R=insBlanc(S); printf("%s\n",R); free(R); system("pause"); return 0; }

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Перед каждым вхождением символа C в строку S вставить строку S0
Гайз, прошу вашей помощи. Пытаюсь решить следующую задачу: "Дан символ C и строки S, S0. Перед.

Вставка символа в массив со сдвигом элемента
Здравствуйте! Как можно вставить елекмент в массив со свдивгом следущего?

Вставка символа между двумя символами в файле
Добрый день. Изучая С дошел до темы файлового ввода-вывода, ни у Дейтелов, ни у Прата не нашел.

Вставка в строку другую строку после определённого символа
Помогите простой вопрос решить нужно вставить слово one после последнего символа "/" например.

Или воспользуйтесь поиском по форуму:

Как добавить в конец char символы?

конечно я понимаю что это так не работает, но все таки, как к концу char добавить char ?

  • Вопрос задан более двух лет назад
  • 186 просмотров

Комментировать

Решения вопроса 1

LoliDeveloper

LoliDeveloper @LoliDeveloper

Линейная алгебра как смысл жизни

Используйте memcpy().

Ответ написан более двух лет назад

Нравится 3 1 комментарий

Игорь Галушко @always_drunkking Автор вопроса

постараюсь разобраться
Спасибо

Ответы на вопрос 2

в c++ уже очень давно есть полноценные (и соответственно медленные, но не в реализации а идеологически) строки, класс string с которыми и + прокатит и синтаксически удобные

Ответ написан более двух лет назад

Комментировать

Нравится 3 Комментировать

Ketchuup69

Ketchuuuup @Ketchuup69

найти где в processname ‘\0’ и туда скопировать «.exe»

Как добавить char в string c

Если надо добавить в конец строки другую строку, применяется метод append() , в который передается добавляемая строка:

#include #include int main() < std::string message< "hello">; message.append(" "); // добавляем пробел message.append("world"); // можно добавить по цепочке // message.append(" ").append("world"); std::cout 

Вставка строки

Для вставки одной строки в другую применяется функция insert() . Она имеет несколько различных версий. Самая простая версия принимет индекс вставки и вставляемую строку:

#include #include int main() < std::string text ; std::string str ; text.insert(7, str); std::cout 

В данном случае в строку text начиная с 7-го индекса вставляем строку str. В итоге переменная text будет равна "insert a string into a text".

Также можно вставлять строковый литерал:

std::string text ; text.insert(6, "C/"); // Hello C/C++

Можно вставлять часть подстроки:

std::string text ; std::string langs ; text.insert(6, langs, 5, 3); // Langs: C, C++

Здесь в text вставляем из переменной langs 3 символа с 5-го индекса, то есть подстроку " C,".

Среди других версий функции insert() также следует отметить версию, которая позволяет вставить определенный символ определенное число раз:

std::string text ; text.insert(8, 5, '*'); // Number: *****5678

В данном случае вставляем в строку text символ * 5 раз начиная с 8 индекса.

Замена подстроки

Для замены в строке некоторой части применяется функция replace() . Эта функция также имеет много версий, поэтому рассмотрим самые распространенные.

Самая простая версия принимает три параметра:

std::string &std::string::replace(size_t _Off, size_t _Nx, const char *_Ptr)

Первый параметр - представляет индекс, с которого надо заменять подстроку. Второй параметр - количество заменяемых символов. Третий параметр - на какую строку надо заменить. Пример:

#include #include int main() < std::string text ; text.replace(6, 4, "C++"); // Lang: C++ std::cout 

Здесь в строке text заменяем 4 символа с 6-го индекса на строку "C++". Таким образом, из строки "Lang: Java" мы получим строку "Lang: C++".

В предыдущем примере символы заменялись на строковый литерал. Но также можно заменять на объект string:

std::string text ; std::string lang <"C++">; text.replace(6, 4, lang); // Lang: C++

Нередко стоит задача заменить какой-то определенную подстроку, индекс которой может быть не известен. В этом случае мы можем воспользоваться поиском в строке, чтобы найти индекс подстроки и ее размер. Например, возьмем текст "Hello, Tom!" и заменим подстроку "Tom" на "Bob":

#include #include int main() < std::string text ; const std::string separators ; // разделители слова size_t start ; // находим позицию подстроки size_t end ; // Находим конец подстроки if(end == std::string::npos) // если разделители слова не найдены < end = text.length(); >text.replace(start, end - start, "Alice"); // заменяем подстроку std::cout 

Здесь находим позицию первого символа подстроки "Tom" в тексте и сохраняем ее в переменную start. Символ, следующий за последним символом подстроки "Tom", находится путем поиска символа разделителя из строки separators с помощью функции find_first_of() . Далее используем найденные позиции индекса в replace() .

Однако в тексте может быть множество вхождений определенной подстроки (в нашем случае строки "Tom"), и может встать задача заменить все эти вхождения. Для этого мы можем использовать циклы:

#include #include int main() < std::string text ; std::string old_str; // какую подстроку заменить std::string new_str; // на какую строку заменить size_t start ; // находим позицию подстроки while (start != std::string::npos) // находим и заменяем все вхождения строки old_str < text.replace(start, old_str.length(), new_str); // Замена old_str на new_str start = text.find(old_str, start + new_str.length()); >std::cout 

Здесь сначала находим индекс первого вхождения подстроки, которую надо заменить, и сохраняем этот индекс в переменную start. В цикле заменяем последовательно все вхождения подстроки. После каждой замены находим индекс следующего вхождения, сохраняем его в переменную start и повторяем цикл. Когда больше нет вхождений подстроки в текст, start будет содержать значение std::string::npos , что завершает цикл.

Из других версий функции replace() можно выделить функцию, которая заменяет подстроку определенным символом, который повторяется определенное количество раз:

std::string text ; text.replace(9, 6, 5, '*'); // Phone: +1*****8901

Здесь заменяет в строке text 6 символов начиная с 9-го индекса на 5 символов *.

Удаление символов

Если надо не просто заменить символы, а удалить их из текста, также можно использовать функцию replace() - в этом случае удаляемые символы фактически заменяются на пустую строку:

#include #include int main() < std::string text ; const std::string empty; text.replace(5, 4, empty); // Замена "Tom" на пустую строку std::cout 

Однако С++ также предоставляет для удаления символов специальную функцию - erase() . В качестве параметров она принимает начальный индекс удаления и количество удаляемых символов:

#include #include int main() < std::string text ; text.erase(5, 4); // удаляем 4 символа с 5-го индекса std::cout 

Аналогично можно удалить все вхождения определенной подстроки:

#include #include int main() < std::string text ; std::string to_delete; // какую подстроку удалить size_t start ; // находим позицию подстроки while (start != std::string::npos) // находим и удаляем все вхождения to_delete < text.erase(start, to_delete.length()); start = text.find(to_delete, start + to_delete.length()); >std::cout 

Функция erase() имеет ряд дополнительных версий. Так, можно оставить определенное количество символов с начала строки, а остальные удалить:

std::string text ; text.erase(5); // удаляем все кроме первых 5 символов - остается "Hello"

Если в функцию не передается никаких параметров, то она удаляет все символы, и в результате получаем пустую строку:

std::string text ; text.erase(); // пустая строка

Стоит отметить, что в стандарт С++20 была добавлена функция std::erase() , которая удаляет все вхождения определенного символа в строке:

#include #include int main() < std::string text ; std::erase(text, 'T'); // Удаляем символ T std::cout 

В данном случае удаляем из строки text символ T.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *