C++入门经典中的一道题

来源:百度知道 编辑:UC知道 时间:2024/06/05 04:06:00
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s1,s2;
cout<<"输入一行字符串:";
getline(cin,s1);
for(int i=0;i<s1.length();++i)
s1[i]=tolower(s1[i]);
cout<<"请输入要查找的字符串"<<endl;
cin>>s2;
for(int rtr1=0;(rtr1=s1.find(s2,rtr1))!=string::npos;rtr1+=s2.length())
{
if(rtr1==0||s1[rtr1-1]==0x20)
{
if(s1[rtr1+s2.length()]==0x20||(rtr1+=s2.length())==s1.length())
{
for(int str2=0;str2<s2.length();++str2)
s1[rtr1+str2]='*';
}
}
}
cout<<s1<<endl;
system("pause");
return 0;
}
这段代码让你输入一个字符串,然后再输入一个字符串,然后在前一个字符串中查找。找到后判断
起始位是否为前一个字符串的0位,
起始位的前一位是否为空格(0x20),
结束位后的一位是否为空格(0x20),
结束位是否等同于为前一字符串长度;
若正确就执行s1[rtr1+str2]='*';
编译能过去就是
一执行到s1[rtr1+str2]='*';

你在别人的机子上试试
我这用vc6没有任何问题

我曾经因为编译器出了问题,搞得非常头痛。
就像你这样,语句没有问题,确老是出错。

你的编译器出问题了吧。。。。。。我用v6和EditPlus都能编译。。。。。

据说是cin会忽略空格。。