2015-07-18 2 views
-3

У меня есть письмо с массивом символьного типа:Удалить специальный символ и строку после этого в массиве символов

char email[80] = "[email protected]" 

Как я могу удалить @ и строку после нее и получить pewdiepie как конечный результат?

+0

проверить это, может быть, это работает для вас HTTP://stackoverflow.com/questions/20971804/reading-stdstring-remove-all-special-characters-from-a-stdstring – wikijames

ответ

3

Например, следующий способ

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); 
0

Если вы настаиваете на сохранение у него есть символ [], а не строка

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'; 
Смежные вопросы