谁能告诉我为什么我的函数不打印名字后的名字的第一个字母?这是我的代码。

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/

10-10 21:22
查看更多