谁能告诉我为什么我的函数不打印名字后的名字的第一个字母?这是我的代码。
void plusScores(ifstream& in, ostream& out)
{
string name;
char score;
int plus = 0;
int minus = 0;;
double sum;
double percent;
while (getline(in, name))
{
while (in >> score && (score == '+' || score == '-'))
{
if (score == '+')
plus++;
else if (score == '-')
minus++;
}
sum = plus + minus;
percent = (plus / sum) * 100;
out << fixed << showpoint << setprecision(1);
out << name << ": " << percent << "% plus" << endl;
plus = 0;
minus = 0;
}
}
我的输出应如下所示:
Kane, Erica: 40.0% plus
Chandler, Adam: 75.0% plus
Martin, Jake: 100.0% plus
Dillon, Amanda: 62.5% plus
相反,我得到这个:
Kane, Erica: 40.0% plus
handler, Adam: 75.0% plus
artin, Jake: 100.0% plus
illon, Amanda: 62.5% plus
它正在读取的文本文件如下所示:
Kane, Erica
--+-+
Chandler, Adam
++-+
Martin, Jake
+++++++
Dillon, Amanda
++-++-+-
最佳答案
因为while (in >> score && (score == '+' || score == '-'))
读取这些字母。由于它们不是+
或-
,因此不再使用。
相反,我建议对getline
/ +
行也使用-
,然后在完整字符串中计算+
和-
的数量。 (有关如何计数的信息,请参见this question。)
关于c++ - C++-函数不会打印行首字母,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43361334/