Я пытаюсь удалить символы из указателя char и хотел бы сохранить их обратно в новой переменной указателя символов, скажем, «temp». Так что я бы что-то вроде этого:Удалить элементы из char * C++
char *test = "[email protected]#3$4%5^6&7*[email protected]#0";
char *temp = "";
затем удалить "@, #, $,%, ^, *, @, #,!" И разместить новые значения "12345678910" в * темп , Это сделало бы temp равным «12345678910».
Возможно ли это?
Я делал это со строкой, но мне действительно нужно сделать это с помощью указателей на символы. Вот как я это сделал со строкой:
std::string str("[email protected]#3$4%5^6&7*[email protected]#0");
std::string temp("");
char chars[] = "@#$%^&*!";
for (unsigned int i = 0; i < strlen(chars); ++i)
{
str.erase (std::remove(str.begin(), str.end(), chars[i]), str.end());
}
temp = str;
Так что вы здесь видите, что я делаю это все строки, но я просто не могу уйти с asigning полукокса * переменная, как тест на строку, потому что сво незаконное обращение. Однако почему я могу установить мои переменные char * равным строке так?
char *test = "123456789";
Однако это незаконно?
std::string str("[email protected]#3$4%5^6&7*[email protected]#0");
char chars[] = "@";
for (unsigned int i = 0; i < strlen(chars); ++i)
{
str.erase (std::remove(str.begin(), str.end(), chars[i]), str.end());
}
char *test = str; //Illegal point
Благодарим за ваше время.
Зачем вам нужно использовать 'char *'? 'std :: string' был разработан в основном потому, что использование' char * 'для строк бессмысленно болезненно. Вы также можете уточнить, какие символы вы хотите сохранить/удалить - просто вы хотите удалить '@' или просто сохранить десятичные цифры или что именно? –
Это выглядит как задание для регулярных выражений. – StephenTG
Если вам нужно использовать char * для строк (я предполагаю, что вы используете интерфейсы старого стиля для функций), используйте строку string.c_str(). Не пытайтесь манипулировать char * напрямую - они не массивы и не должны рассматриваться как массивы. –