У меня есть письмо с массивом символьного типа:Удалить специальный символ и строку после этого в массиве символов
char email[80] = "[email protected]"
Как я могу удалить @
и строку после нее и получить pewdiepie
как конечный результат?
У меня есть письмо с массивом символьного типа:Удалить специальный символ и строку после этого в массиве символов
char email[80] = "[email protected]"
Как я могу удалить @
и строку после нее и получить pewdiepie
как конечный результат?
Например, следующий способ
if (char *p = std::strchr(email, '@')) *p = '\0';
В C вы должны объявить переменную p
перед, если заявление. Например
char *p;
if ((p = strchr(email, '@')) != NULL) *p = '\0';
Если вместо массива символов использовать объект типа std::string
как, например
std::string email("[email protected]");
, то вы можете написать
auto pos = email.find('@');
if (pos != std::string::npos) email.erase(pos);
Просто
#include <string>
std::string email("[email protected]");
email.erase(email.find('@'));
Если вы настаиваете на сохранение у него есть символ [], а не строка
char email[80] = "[email protected]";
char name[80]; // to hold the new string
name[std::find(email, email + 80, '@') - email] = '\0'; // put '\0' in correct place
strncpy(name, email, std::find(email, email + 80, '@') - email); // copy the string
Если вы хотите изменить исходный символ [],
*(std::find(email, email + 80, '@')) = '\0';
проверить это, может быть, это работает для вас HTTP://stackoverflow.com/questions/20971804/reading-stdstring-remove-all-special-characters-from-a-stdstring – wikijames