Нужно заменить слово can на любое, который пользователь хочет
НО canner не должен менять! но почему код не слушает меня и меняет?
я ему четко сказал "найдешь can, меняй"
Код программы:
#include
#include
using namespace std;
int main()
{
string str1, str3;
cout << "Введи замену" << endl;
getline(cin, str3);
string str2 = "Can you can a can as a canner can can a can";
string can = "can";
while (str2.find(can) != string::npos)
{
auto pos = str2.find(can);
str2.erase(pos, can.size());
str2.insert(pos, str3);
}
can = "Can";
if ((str3[0] > 96) && (str3[0] < 123))
str3[0] -= 32;
while (str2.find(can) != string::npos) {
auto pos = str2.find(can);
str2.erase(pos, can.size());
str2.insert(pos, str3);
}
cout <<"Вывод с заменой\n" <<str2 <<endl;
return 0;
}
C/C++
Почему делает неправильно?
Пусть ищет с пробелом "can ", если нет то не меняет
#include < iostream >
#include < string >
using namespace std;
int main()
{
string str1, str3;
cout << "Введи замену" << endl;
getline(cin, str3);
string str2 = "Can you can a can as a canner can can a can";
cout << str2 << endl;
string can = "can "; //ПРОБЕЛ
while (str2.find(can) != string::npos)
{
auto pos = str2.find(can);
str2.erase(pos, can.size());
str2.insert(pos, str3+" "); //Добавляем пробел
}
can = "Can ";
if ((str3[0] > 96) && (str3[0] < 123))
str3[0] -= 32;
while (str2.find(can) != string::npos) {
auto pos = str2.find(can);
str2.erase(pos, can.size());
str2.insert(pos, str3+" ");//Добавляем пробел
}
cout <<"Вывод с заменой\n" <<str2 <<endl;
return 0;
}
#include < iostream >
#include < string >
using namespace std;
int main()
{
string str1, str3;
cout << "Введи замену" << endl;
getline(cin, str3);
string str2 = "Can you can a can as a canner can can a can";
cout << str2 << endl;
string can = "can "; //ПРОБЕЛ
while (str2.find(can) != string::npos)
{
auto pos = str2.find(can);
str2.erase(pos, can.size());
str2.insert(pos, str3+" "); //Добавляем пробел
}
can = "Can ";
if ((str3[0] > 96) && (str3[0] < 123))
str3[0] -= 32;
while (str2.find(can) != string::npos) {
auto pos = str2.find(can);
str2.erase(pos, can.size());
str2.insert(pos, str3+" ");//Добавляем пробел
}
cout <<"Вывод с заменой\n" <<str2 <<endl;
return 0;
}
#include <iostream>
#include <string>
#include <regex>
using namespace std;
int main() {
system("chcp 1251 > nul");
string canner = "Can you can a can as a canner can can a can";
auto can = regex("can\\b");
cout << "Введи замену: ";
string word;
cin >> word;
canner = regex_replace(canner, can, word);
cout << canner << '\n';
system("pause > nul");
}
#include <string>
#include <regex>
using namespace std;
int main() {
system("chcp 1251 > nul");
string canner = "Can you can a can as a canner can can a can";
auto can = regex("can\\b");
cout << "Введи замену: ";
string word;
cin >> word;
canner = regex_replace(canner, can, word);
cout << canner << '\n';
system("pause > nul");
}
вам помогут регулярые выражения
regexp -- ключевое слово
там такие заменны есть, нужно только прописать оптимальный шаблон замены
прмеры онлайн сайты по тестированию regexp регулярных выражений
пример ваш случай
а ) - https://regexr.com/5dst6
б ) - https://regex101.com/r/EG4Wbj/1
regexp -- ключевое слово
там такие заменны есть, нужно только прописать оптимальный шаблон замены
прмеры онлайн сайты по тестированию regexp регулярных выражений
пример ваш случай
а ) - https://regexr.com/5dst6
б ) - https://regex101.com/r/EG4Wbj/1
а это на каком языке?
хз
Станислав Глаголев
спасибо....
Алексей Дигор
не ты не обижайся ща поспрашаю у дрганов!
Алексей Дигор
#include
#include
using namespace std;
void main()
{
string str1;
cout << "Введи замену" << endl;
char a[]="";
cin >> a;
string str2 = "Can you can a can as a canner can can a can";
string can = "can ";
while (str2.find(can) != string::npos)
{
auto pos = str2.find(can);
str2.erase(pos, can.size());
str2.insert(pos, a);
}
can = "Can";
if ((a[0] > 96) && (a[0] < 123))
a[0] -= 32;
while (str2.find(can) != string::npos) {
auto pos = str2.find(can);
str2.erase(pos, can.size());
str2.insert(pos, a);
}
cout << "Вывод с заменой\n" << str2 << endl;
system("pause");
}
я попробовал!
#include
using namespace std;
void main()
{
string str1;
cout << "Введи замену" << endl;
char a[]="";
cin >> a;
string str2 = "Can you can a can as a canner can can a can";
string can = "can ";
while (str2.find(can) != string::npos)
{
auto pos = str2.find(can);
str2.erase(pos, can.size());
str2.insert(pos, a);
}
can = "Can";
if ((a[0] > 96) && (a[0] < 123))
a[0] -= 32;
while (str2.find(can) != string::npos) {
auto pos = str2.find(can);
str2.erase(pos, can.size());
str2.insert(pos, a);
}
cout << "Вывод с заменой\n" << str2 << endl;
system("pause");
}
я попробовал!
Алексей Дигор
АЛЁЁ
Похожие вопросы
- C++ неправильно делит!
- Почему реклама предлагает выучиться программировать за 7 месяцев а книга всего за 21 день?
- Задача по с++. Кто делал подобное, помогите
- Программа на c++ не работает. Написать структуру и прочее. Подскажите, пожалуйста, что я делаю не так.
- Челики, еще задачку дали, как делать, елы палы.
- Что делать с ошибкой в Visual Studio?
- Почему изучение C++ как первый язык программирования даёт такое сильное преимущество во всех планах чем изучение
- Почему C++, а не C--, ведь так болле логично, потому что от C сплошной минус.
- Почему запускается старая программа в visual studio. C++
- Почему возникает такая ошибка в C++?
#include
using namespace std;
void main()
{
string str1;
cout << "Введи замену" << endl;
char a[]="";
cin >> a;
string str2 = "Can you can a can as a canner can can a can";
string can = "can ";
while (str2.find(can) != string::npos)
{
auto pos = str2.find(can);
str2.erase(pos, can.size());
str2.insert(pos, a);
}
can = "Can";
if ((a[0] > 96) && (a[0] < 123))
a[0] -= 32;
while (str2.find(can) != string::npos) {
auto pos = str2.find(can);
str2.erase(pos, can.size());
str2.insert(pos, a);
}
cout << "Вывод с заменой\n" << str2 << endl;
system("pause");
}