我正在编写一个包含字符串的程序,然后我通过字符串读取并使用向量将所有数字放入数组中,然后使用count我必须在该数组中计算相同的数字,然后打印数字作为明星。
我得到的错误是二进制表达式的无效操作数。
这是代码。
#include <iostream>
#include <vector>
#include <algorithm>
#include<array>
using namespace std;
int main() {
vector<string> array;
string grades = "01211342111153332211111232454444";
int newarray[31];
for(int i = 0 ; i < grades.length(); i++){
array.push_back(grades.substr(i,1));
}
int zero = count(std::begin(array),std::end(array),0);
int one = count(std::begin(array),std::end(array),1);
int two = count(std::begin(array),std::end(array),2);
int three = count(std::begin(array),std::end(array),3);
int four = count(std::begin(array),std::end(array),4);
int five = count(std::begin(array),std::end(array),5);
// also used this way int zero = count(array.begin(),array.end(),0); but still getting error.
for(int i = 0 ; i < one ; i ++){
cout << '1 - ' << '*' << ' ';
}
for(int j = 0 ; j < two ; j++){
cout << '2 - ' << '*' << ' ';
}
}
学习C ++所以希望人们对我有点轻松。
答案 0 :(得分:2)
这里有很多问题。
首先,您要将数字与int zero = count(std::begin(array),std::end(array),0);
中的字符串进行比较。您想要将字符串与字符串进行比较。
其次,您正在尝试cout
'1 - '
。 '
适用于字符,因此您应该使用"
。
最后,在cout
中,您只需要在星星和空间上循环,而不是"1 - "
。并使用cout<<"\n";
或cout<<std::endl;
您可以尝试以下操作:
int main()
{
vector<string> array;
string grades = "01211342111153332211111232454444";
int newarray[31];
for(int i = 0 ; i < grades.length(); i++){
array.push_back(grades.substr(i,1));
}
int zero = count(std::begin(array),std::end(array),"0");
int one = count(std::begin(array),std::end(array),"1");
int two = count(std::begin(array),std::end(array),"2");
int three = count(std::begin(array),std::end(array),"3");
int four = count(std::begin(array),std::end(array),"4");
int five = count(std::begin(array),std::end(array),"5");
cout << "1 - ";
for(int i = 0 ; i < one ; i ++){
cout << '*' << ' ';
}
cout << "\n";
cout << "2 - ";
for(int i = 0 ; i < two ; i ++){
cout << '*' << ' ';
}
cout << "\n";
/*....*/
}