Task: Offer two variants of the function that removes leading and trailing spaces from a string. Help, please, repair the program code: Does not display the converted string, tell me what is wrong?
void FirstRemoveSpaces(char str[]) { int i, j; int len = strlen(str); // определяем количество символов for (i = 0, j = 0; str[i]; ++i) if (str[0] != ' ' || str[len - 1] != ' ') { // если не нашли пробел str[j++] = str[i]; // записываем в строку символ } str[j] = 0; cout << "Строка преобразована первым способом: "; puts(str); // вывод строки } And with the error in the second function, I can not understand what is wrong? void SecondRemoveSpaces (string s) {
if (s[0] == ' ') { s.erase(0, 1); // удаление символа } int len = s.length - 1; if (s[len] == ' ') { s.erase(len, 1); // удаление символа } } Well, the full program:
#include "pch.h" #include <iostream> using namespace std; void FirstRemoveSpaces(char str[]) { int i, j; int len = strlen(str); // определяем количество символов for (i = 0, j = 0; str[i]; ++i) if (str[0] != ' ' || str[len - 1] != ' ') { // если не нашли пробел str[j++] = str[i]; // записываем в строку символ } str[j] = 0; cout << "Строка преобразована первым способом: "; puts(str); // вывод строки } void SecondRemoveSpaces(string s) { if (s[0] == ' ') // если встречается больше двух пробелов подряд { s.erase(0, 1); // удаление символа } int len = s.length - 1; if (s[len] == ' ') // если встречается больше двух пробелов подряд { s.erase(len, 1); // удаление символа } } int main() { setlocale(LC_ALL, "Russian"); // подключение русского языка char str[] = " Hi, this is a test! "; // инциализация строки string s = str; cout << "Строка: " << str << endl; // вывод строки FirstRemoveSpaces(str); // вызов первой функции SecondRemoveSpaces(s); }
SecondRemoveSpaces(string &s)forgot the ampersand. 2.int len = s.length() - 1;length () is a function. - uber42 3:14 pm