一道C++题,我哪错了?

来源:百度知道 编辑:UC知道 时间:2024/06/08 10:36:13
txt文件中每一行都是一个二进制数,不超过64位,不超过3000个,遇到-1停止。
从txt中提取每行的数转换成十进制,然后输出换行。

#include<iostream>
#include<fstream>
#include<sstream>
#include<cmath>
using namespace std;

string str;
long double sum=0;

void main(){

ifstream in("change.txt");

for(int j=0; getline(in,str)||j<3000;sum=0,j++){

if(str=="-1") break;

for (int a=0;a<str.length();a++){

if(str[a]==1)
sum+=pow(2,str.length()-a-1);
}

cout<<sum<<endl;
}
}

怎么输出全是零?

#include<iostream>
#include<fstream>
#include<sstream>
#include<cmath>
using namespace std;

string str;
long double sum=0;

void main(){

ifstream in("change.txt");

for(int j=0; getline(in,str)||j<3000;sum=0,j++){

if(str=="-1") break;

for (int a=0;a<str.length();a++){

if(str[a]=='1') // 这里应该是判断字符'0','1',而不是整数0,1
sum+=pow(2,str.length()-a-1);
}

cout<<sum<<endl;
}
}

if(str[a]==1)
这个判断错了,改成if(str[a]-'0'==1)就可以了