问题:在我们第一次调用函数(例如:getline)的时候,会因为读取数字后又读取了换行符,
导致输出结果不对;
此时我们可以、采用标准输入流方法cin.ignore()
例:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a;
cin >> a;
for (int i = 1; i <= a; i++)
{
int temp = 0;
string s;
getline(cin, s);
for (int j = 0; j < s.length(); j++)
{
char b = s[j];
if (b >= 'A' && b <= 'Z')
{
temp += b - 'A' + 1;
}
}
cout << temp << endl;
}
return 0;
}
输出:
以上为没有采用cin.ignore的输出结果。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a;
cin >> a;
cin.ignore();
for (int i = 1; i <= a; i++)
{
int temp = 0;
string s;
getline(cin, s);
for (int j = 0; j < s.length(); j++)
{
char b = s[j];
if (b >= 'A' && b <= 'Z')
{
temp += b - 'A' + 1;
}
}
cout << temp << endl;
}
return 0;
}
输出:
上为使用cin.ignore()的输出结果。
文章中的例子是一个统计珠宝价值的简单代码,但是如果不采用cin.ignore就会导致输出结果错误的情况,对于例子来说就是防止getline()函数在第一次被调用的过程中读取“\n”换行符,从而导致输出结果错误。