我文件中有“&”,但是他好像读的有问题,无法进行调试
提取了片段
#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;
int main()
{
string c;
ifstream filein("密码.txt",ios::in);
while(getline(filein,c))
{
if(c=="&")
{
flag=1;
continue;
}
if(flag==1)
{
cout<<c<<endl;
break;
}
}
return 0;
}
密码.txt中:
&
awdrgy
16827
17234
23424
......
为什么它输出为空白?
1.你首先看一下,保存下来的文件是否“密码.txt”,因为在我这里保存下来是乱码的(系统对中文处理的问题),如果确定没问题再往下找问题;
2.我只挑一部分来分析
ofstream file2("密码.txt",ios::app);
file2<<endl<<name;
for(int t=0;t<100;t++)
{
file2<<endl<<num[0][t];
}
file2<<"&";
这里代码file2<<"&";没有换行再写入,就会出现比如:xxx&这样情况,所以if(c=="&")就会为假;
我的建议;
把你的文件备份再修改,将
if(c=="&")改为if(c.find("&") != std::string::npos)
或者将
file2<<"&";改为 file2<<endl<<"&";
其中这个: if(c=="&"),字符串的对比这样是不得行的哦!应该调用字符串的对比函数来判断,在对字符串对比函数的结果判断才行吧。
我试了一下好像可以输出呀
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
int main()
{
string c;
int flag = 0;
ifstream filein("密码.txt", ios::in);
while (getline(filein, c))
{
if (c == "&")
{
flag = 1;
continue;
}
if (flag == 1)
{
cout << c << endl;
break;
}
}
return 0;
}
输出是
awdrgy
你看一下你的代码和我的有不同不
这个是提取的片段,要全文吗
#include<iostream>
#include<cstdio>
#include<fstream>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<ctime>
using namespace std;
int main()
{
for( ; ; )
{
string control="",endif="",c="",swap="",name="",passport="",h="",n="",inspect_type="",test_name="",inspect_name[30],inspect_password[30];
char l;
int No=0,flag=0,num[30][100],flag2=0,flag3=0,flag4=0,flag5=0,flag6=0,flag7=0,flag8=0,m=0,o=0,r=0,length_name[30],length_password[30][100],k[30][100][6],num_name,sum[3];
for(int t=0;t<30;t++)
{
for(m=0;m<100;m++)
{
memset(k[t][m],0,sizeof(k[t][m]));
}
}
memset(length_password,0,sizeof(100));
cout<<"请问要进行什么操作?"<<endl<<"(注册/查看/更新/购买)"<<endl;
cin>>control;
if(control=="注册")
{
fstream testbycharfile;
testbycharfile.open("名单2.txt",ios::in);
while(!testbycharfile.eof())
{
testbycharfile>>l;
if(l=='$')
{
No+=1;
}
}
for( ; ; )
{
cout<<"请输入昵称"<<endl;
cin>>name;
ifstream filein8("名单.txt",ios::in);
while(filein8>>c)
{
if(c==name)
{
flag6=1;
break;
}
}
if(flag6==1)
{
cout<<"昵称已存在!";
flag6=0;
continue;
}
cout<<endl<<"请输入密码"<<endl;
cin>>passport;
for(int t_1=0;t_1<10;t_1++)
{
for(int t_2=0;t_2<10;t_2++)
{
for(int t_3=0;t_3<t_1;t_3++)
{
test_name+=t_2+'0';
if(passport==(name+test_name))
{
cout<<"密码过于简单!";
flag6=1;
break;
}
if(passport==test_name)
{
cout<<"密码过于简单!";
flag6=1;
break;
}
}
if(flag6==1)
{
break;
}
test_name="";
}
if(flag6==1)
{
break;
}
}
if(flag6==1)
{
flag6=0;
continue;
}
cout<<endl;
cout<<"请确认信息" <<endl<<"昵称:"<<name<<endl<<"编号:"<<No<<endl<<"密码:"<<passport<<"(输入是或否)"<<endl;
cin>>h;
if(h=="是")
{
break;
}
else if(h=="否")
{
}
else
{
cout<<"已默认为“否”";
}
}
testbycharfile.open("名单.txt",ios::in);
ofstream fileOut("名单2.txt",ios::app);
while(!testbycharfile.eof())
{
testbycharfile>>c;
fileOut<<c;
}
fileOut<<No<<"#"<<name<<"#"<<passport<<"$";
ofstream fileio2("名单.txt",ios::app);
fileio2<<endl<<No<<endl<<name<<endl<<passport<<endl<<"&";
srand((unsigned)time(NULL));
for(int i=0;i<100;i++)
{
num[0][i]=rand()%999999;
}
ofstream file2("密码.txt",ios::app);
file2<<endl<<name;
for(int t=0;t<100;t++)
{
file2<<endl<<num[0][t];
}
file2<<"&";
}
else if(control=="查看")
{
cout<<"请输入查看类型(个人/查看码)"<<endl;
cin>>inspect_type;
if(inspect_type=="个人")
{
cout<<"请输入你要查看的名字"<<endl;
cin>>name;
ifstream filein("名单.txt",ios::in);
flag=0;
while(filein>>c)
{
if(c=="&")
{
++flag;
}
if(c==name)
{
ifstream filein3("名单.txt",ios::in);
while(filein3>>c)
{
if(flag==0)
{
cout<<"编号:"<<c<<endl;
flag3=1;
flag++;
}
if(flag2==1)
{
cout<<"昵称:"<<c<<endl;
}
if(flag2==2)
{
cout<<"密码:"<<c<<endl;
}
if(flag3==1)
{
flag2++;
if(c=="&")
{
break;
}
}
if(c=="&")
{
flag-=1;
}
}
flag=1;
break;
}
}
if(flag==1)
{
ifstream filein2("密码.txt",ios::in);
cout<<"查看码:";
flag4=0;
flag3=0;
while(filein2>>c)
{
if(c=="&")
{
flag3++;
}
if(c==name)
{
ifstream filein4("密码.txt",ios::in);
while(filein4>>c)
{
if(flag3==0&&flag4==0)
{
flag4++;
continue;
}
if(c=="&")
{
flag3--;
}
if(flag4==1)
{
if(c=="&")
{
break;
}
cout<<endl<<c;
}
}
cout<<endl;
}
}
}
else
{
cout<<"用户不存在!";
}
}
else if(inspect_type=="查看码")
{
cout<<"请输入集数";
cin>>No;
ifstream filein5("密码.txt",ios::in);
flag=0;
while(filein5>>c)
{
if(No>100)
{
cout<<"集数不存在!";
break;
}
if(c=="&")
{
flag=-2;
}
flag+=1;
if(flag==0)
{
cout<<c<<endl;
}
if(flag==No)
{
cout<<" "<<c<<endl;
}
}
}
}
else if(control=="更新")
{
ifstream filein6("密码.txt",ios::in);
flag5=-1;
flag4=0;
flag3=0;
flag=0;
flag2=0;
while(filein6>>c)
{
if(c=="&")
{
flag5++;
flag=1;
flag2++;
continue;
}
if(flag==2)
{
length_password[flag5][flag3]=c.size();
flag3++;
}
if(flag==1)
{
length_name[flag4]=c.size();
inspect_name[flag4]=c;
flag4++;
flag=2;
}
}
num_name=flag4;
flag=0;
m=0;
o=0;
flag3=0;
flag4=-1;
flag5=-1;
fstream testbycharfile;
testbycharfile.open("密码.txt",ios::in);
while(testbycharfile>>l)
{
if(l=='&')
{
flag=0;
}
if(flag==1)
{
if(length_name[flag4]>0)
{
length_name[flag4]-=1;
continue;
}
o=length_password[flag5][flag3];
if(m==0)
{
--o;
}
k[flag5][m][o]=l-'0';
if(o==0)
{
flag3+=1;
m++;
}
length_password[flag5][flag3]-=1;
}
if(l=='&')
{
flag5++;
flag2-=1;
flag4++;
flag=1;
m=0;
}
}
ifstream filein10("名单.txt",ios::in);
while(filein10>>c)
{
if(flag7==3)
{
inspect_password[r]=c;
flag7=0;
r++;
}
if(flag7==2)
{
flag7++;
}
if(flag7==1)
{
flag7++;
}
if(c=="&")
{
flag7=1;
}
}
for(int t=0;t<100;t++)
{
num[0][t]=k[0][t][5]*100000+k[0][t][4]*10000+k[0][t][3]*1000+k[0][t][2]*100+k[0][t][1]*10+k[0][t][0];
}
ofstream fileout7("我的我的世界Bug日记4.2.0.cpp",ios::out);
fileout7<<"#include<iostream>\n#include<fstream>\n#include<cstring>\nusing namespace std;\nint main()\n{\n int b,flag;\n string name,password;\n char a;\n cout<<\"请输入昵称\";\n cin>>name;\n cout<<\"请输入密码\";\n cin>>password;\n if(name==\""<<inspect_name[0]<<"\")\n {\n if(password==\""<<inspect_password[0]<<"\")\n {\n cout<<\"请问你要看哪一期?\";\n cin>>a;\n cout<<\"请输入查看码\";\n cin>>b;\n switch(a)\n {\n";
for(int t=0;t<100;t++)
{
fileout7<<" case'"<<t+1<<"':\n if(b=="<<num[0][t]<<")\n {\n flag=1;\n }\n else\n {\n flag=2;\n }\n break;\n";
}
fileout7<<" }\n if(flag==1)\n {\n switch(a)\n {\n case'1':\n {\n ofstream fileOut(\"我的世界Bug日记第1期.txt\",ios::out);\n fileOut<<\"Bug出生在一个荒岛上,\"<<endl<<\"他不是新手,所以知道要砍树。\"<<endl<<\"他看了看四周,发现没有树,于是他往前走\"<<endl<<\"走着走着,他瞬移了,卡到一棵树里\"<<endl<<\"卡死了。\"<<endl<<\"第一期结束\";\n break;\n }\n case'2':\n {\n fstream fileOut2(\"我的世界Bug日记第二期.txt\",ios::out);\n fileOut2<<\"Bug重生了,但他却不在那个岛上\"<<endl<<\"他在山洞里,发现一个宝箱,里面有本书\"<<endl<<\"他打开一看,里面写着:重生点更改 100%\"<<endl<<\"瞬移 25%\"<<endl<<\"后面都是空的,他想:这难道是我卡Bug的几率?\"<<endl<<\"他突然被小白围攻,他搭起了一堵墙,结果还是死了。\"<<endl<<\"书上默默地多了一条:\"<<endl<<\"弓箭穿墙 30%\"<<endl<<\"第二期结束\";\n }\n default:cout<<\"尚未开发\";\n }\n }\n }\n }\n else if(flag==2)\n {\n cout<<\"密码错误!\";\n }\n";
ofstream fileout8("我的我的世界Bug日记4.2.0.cpp",ios::app);
for(int i=1;i<num_name;i++)
{
for(int t=0;t<100;t++)
{
num[i][t]=k[i][t][5]*100000+k[i][t][4]*10000+k[i][t][3]*1000+k[i][t][2]*100+k[i][t][1]*10+k[i][t][0];
}
fileout8<<"else if(name==\""<<inspect_name[i]<<"\")\n {\n if(password==\""<<inspect_password[i]<<"\")\n {\n cout<<\"请问要看哪一期?\";\n cin>>a;\n cout<<\"请输入查看码\";\n cin>>b;\n switch(a)\n {\n";
for(int t=0;t<100;t++)
{
fileout8<<" case'"<<t+1<<"':\n if(b=="<<num[i][t]<<")\n {\n flag=1;\n }\n else\n {\n flag=2;\n }\n break;\n";
}
fileout8<<" }\n if(flag==1)\n {\n switch(a)\n {\n case'1':\n {\n ofstream fileOut(\"我的世界Bug日记第1期.txt\",ios::out);\n fileOut<<\"Bug出生在一个荒岛上,\"<<endl<<\"他不是新手,所以知道要砍树。\"<<endl<<\"他看了看四周,发现没有树,于是他往前走\"<<endl<<\"走着走着,他瞬移了,卡到一棵树里\"<<endl<<\"卡死了。\"<<endl<<\"第一期结束\";\n break;\n }\n case'2':\n {\n fstream fileOut2(\"我的世界Bug日记第二期.txt\",ios::out);\n fileOut2<<\"Bug重生了,但他却不在那个岛上\"<<endl<<\"他在山洞里,发现一个宝箱,里面有本书\"<<endl<<\"他打开一看,里面写着:重生点更改 100%\"<<endl<<\"瞬移 25%\"<<endl<<\"后面都是空的,他想:这难道是我卡Bug的几率?\"<<endl<<\"他突然被小白围攻,他搭起了一堵墙,结果还是死了。\"<<endl<<\"书上默默地多了一条:\"<<endl<<\"弓箭穿墙 30%\"<<endl<<\"第二期结束\";\n }\n default:cout<<\"尚未开发\";\n }\n }\n }\n }\n else if(flag==2)\n {\n cout<<\"密码错误!\";\n }\n";
}
fileout8<<" return 0;\n}";
}
else if(control=="购买")
{
cout<<"请输入昵称"<<endl;
cin>>name;
cout<<"请输入集数(n~m)"<<endl;
cin>>num[0][0]>>l>>num[0][1];
if(l!='~')
{
flag==5;
}
if(num[0][0]>num[0][1])
{
num[0][2]=num[0][0];
num[0][0]=num[0][1];
num[0][1]=num[0][2];
}
ifstream filein11("密码.txt");
while(getline(filein11,n))
{
if(n=="&")//在这里出错
{
flag=1;
continue;
}
if(flag==1)
{
flag=2;
continue;
}
if(flag==2)
{
if(name==n)
{
flag2=1;
for(int t=1;t<num[0][0];t++)
{
filein11>>n;
if(c=="&")
{
flag5=1;
break;
}
}
if(flag5==1)
{
break;
}
cout<<"查看码为:"<<endl;
for(int t=1;t<num[0][1]-num[0][0]+1;t++)
{
filein11>>n;
cout<<" "<<n<<endl;
}
break;
}
flag=0;
}
}
sum[0]=num[0][1]-num[0][0]+1;
sum[1]=sum[0]/5;
if(sum[1]*5!=sum[0])
{
sum[2]=5-(sum[0]-sum[1]*5);
sum[1]++;
}
else
{
sum[2]=0;
}
cout<<"总价="<<sum[1]<<"-"<<sum[2]<<endl;
if(flag5==1)
{
cout<<"集数不存在!";
}
}
cout<<"是否继续?"<<endl;
cin>>endif;
if(endif=="否")
{
break;
}
}
return 0;
}
密码.txt:
&
awdrgy
12762
12237
37929
49373
92374
......
我自己玩着玩着解决了,谢谢各位