Дана строка, состоящая из символов букв и цифр Между словами вставить запятую и пробел

Рейтинг: 0Ответов: 2Опубликовано: 11.04.2023

символы буквы и цифры ввести в командной строке. помогите пожалуйста не могу вывести в командной строке символы итд

#include <iostream>
#include <conio.h>
#include <string>

void change(string &str);
using namespace std;

int main() {
    string str,s1;
    cout << "str:";
        getline(cin, str);

    for (string::size_type i = 0; i < str.size(); ++i) {
        if (str[i] == ' ') 
            str.insert(i, ", ");
        cout << str << s1 << endl;
    }
        _getch();
        return 0;
    }

Ответы

▲ 0

Что-то мне подсказывает, что Вы попадаете в бесконечный цикл:
Каждый раз, когда Вы попадаете на пробел, Вы:

  • увеличиваете длину строки
  • добавляете еще один пробел, который Вам в будущем придется еще раз обрабатывать, а при его обработке Вы еще раз добавите еще один пробел, который в последствии придется обрабатывать и так далее...

Действуете проще:
Вам нужно выводить

  1. выводите в цикле посимвольно
  2. перед пробелом выводите запятую
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;

int main() {
    string str,s1;
    cout << "str:";
    getline(cin, str);

    for (string::size_type i = 0; i < str.size(); ++i) {
        if (str[i] == ' ') { cout << ','; }
        cout << str[i];
    }
    cout << endl;
    return 0;
}

Я ни разу не C++ разработчик, но мне кажется, что такое решение Вам может подойти

введите сюда описание изображения

▲ 0
string str;
   cout << "str:";
       getline(cin, str);
       int size=str.size();
   for (int i = 0; i<size; ++i) 
       if (str[i] == ' ') 
           {str.insert(i,", ");
           i+=2;}//тк старый пробел сместился на 2 вперед, то мы к нему же и идем, чтобы быть на исходной позиции
   cout<<str;}