Дана строка, состоящая из символов букв и цифр Между словами вставить запятую и пробел
символы буквы и цифры ввести в командной строке. помогите пожалуйста не могу вывести в командной строке символы итд
#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;
}
Ответы (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++ разработчик, но мне кажется, что такое решение Вам может подойти
Автор решения: Sashkinzz
→ Ссылка
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;}
