Anti-Antidote Ответов: 1

Как заменить символы в строке?


string title = "I like to code."
char arr[title.size() + 1];
strcpy(arr, title.c_str());
int i = 0;
while(arr[1][i] != 0){
	if(arr[1][i] == ' '){
		arr[1][i] = '-';
	};
	i++;
};
string name(arr);
return name;


Это код, который я собрал вместе. Как вы можете видеть, я преобразую строку в массив, проходя через массив char за char, заменяя пробелы тире, а затем Преобразуя конечный результат обратно в строку. Проблема в том, что компилятор отбрасывает "error: invalid types for array subscript "для оператора" while " и двух строк после него. Как я могу это исправить? Спасибо всем!

Что я уже пробовал:

Я пробовал использовать std::replace шаблон из #include <algorithm> но безрезультатно.

1 Ответов

Рейтинг:
10

Patrice T

Попробуйте заменить все arr[1][i] с arr[i] чтобы сделать компилятор счастливым.

Чтобы отслеживать другие ошибки:
Вы должны научиться использовать отладчик как можно скорее. Вместо того чтобы гадать, что делает ваш код, пришло время увидеть, как он выполняется, и убедиться, что он делает то, что вы ожидаете.

Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
Когда код не делает того, что ожидается, вы близки к ошибке.


Anti-Antidote

БОЛЬШОЕ ВАМ СПАСИБО! Я пытался исправить это в течение последних пяти часов, и это сводило меня с ума! Спасибо!