Мне нужна помощь с C ++ <string.h>
таблицы char …. Как вырезать слово из предложения, используя*
оператор, без strstr
? Например: «StackOverFlow — это онлайн-сайт». Я должен отключить «StackOverFlow» и оставить в таблице «это онлайн-сайт» с помощью оператора, без strstr
, Я не мог найти это нигде.
В основном как:
char t[]
int main
{
strcpy(t,"Stackoverflow is online website");
???
(Setting first char to NULL, then strcat/strcpy rest of sentence into table)
}
Извините за проблемы с английским / плохое наименование … Я начинаю изучать C ++
Вы можете сделать что-то вроде этого. Объясните лучше, что вам нужно, пожалуйста.
char szFirstStr[] = "StackOverflow, flowers and vine.";
strcpy(szFirstStr, szFirstStr + 15);
std::cout << szFirstStr << std::endl;
Будет выводить «цветы и лозу».
Использование строк c не является хорошим стилем для программиста C ++, используйте std::string
учебный класс.
Ваш код явно синтаксически некорректен, но я думаю, вы это знаете.
Ваша переменная t
на самом деле это массив символов, и у вас есть указатель, который указывает на первый символ этого символа, как у вас есть указатель, который указывает на первый символ вашей строки с нулевым символом в конце. Что вы можете сделать, это изменить значение указателя так, чтобы оно указывало на новую начальную точку вашей строки.
Вы можете сделать это, или, если вы действительно используете массив, вы можете скопировать из указателя новой начальной точки, которую вы хотите использовать. Поэтому, если данные, которые вы хотите скопировать, находятся в памяти, на которую указывают:
const char* str = "Stackoverflow is an online website";
Это выглядит следующим образом в памяти:
Stackoverflow is an online website\0
str points to: --^
Если вы хотите указать на другую начальную точку, вы можете изменить указатель на другую начальную точку:
Stackoverflow is an online website\0
str + 14 points to: --------------^
Вы можете передать адрес «я» на ваш strcpy
, вот так:
strcpy(t, str + 14);
Очевидно, что нет уверенности в том, что вы знаете, какой размер обрезать без анализа (14), что вы могли бы сделать — поискать в строке первый символ, следующий за пробелом.
// Notice that this is just a sample of a search that could be made
// much more elegant, but I will leave that to you.
const char* FindSecondWord(const char* strToSearch) {
// Loop until the end of the string is reached or the first
// white space character
while (*strToSearch && !isspace(*strToSearch)) strToSearch++;
// Loop until the end of the string is reached or the first
// non white space character is found (our new starting point)
while (*strToSearch && isspace(*strToSearch)) strToSearch++;
return strToSearch;
}
strcpy(t, FindSecondWord("Stackoverflow is an online website"));
cout << t << endl;
Это выведет: это онлайн-сайт
Поскольку это, скорее всего, школьное задание, я пропущу лекцию о более современной обработке строк C ++, так как ожидаю, что это как-то связано с изучением указателей. Но очевидно, что это очень низкоуровневая модификация строки.
Как начинающему, зачем усложнять, тогда это действительно должно быть?
Используйте std :: string
а также
зиЬзЬг ()
Ссылка на сайт