众所周知,C++中gets函数经常会出问题,尤其是在OpenJudge中无法Accepted,为解决此问题,以下展示最简单的一种替代方法:getline函数。
对于getline函数,有以下两种:
一、对于普通字符串类型
对于普通字符串类型,使用 getline(cin,字符串变量名)。
举例如下:
#include <bits/stdc++.h>
using namespace std;
int main()
{
string a;
getline(cin,a);
cout<<a;
}
输入输出为:
二、对于字符串数组
对于字符串数组,使用 cin.getline(数组名,数组下标)。
举例如下:
#include<iostream>
#include<cstring>
#include<string>
#include<stdio.h>
using namespace std;
main ()
{
char a[85];
cin.getline(a,85);
int len = strlen(a);
for(int i = 0; i < len; i++)
{
if(a[i] == 'z')
{
a[i] = 'a';
}
else if(a[i] == 'Z')
{
a[i] = 'A';
}
else if( a[i] <= 'y' && a[i] >= 'a' )
a[i] = a[i] + 1;
else if (a[i] <= 'Y' && a[i] >= 'A')
a[i] = a[i] + 1;
else
a[i] = a[i];
}
cout << a;
}
该代码来源于OpenJudge NOI习题1.7 09密码翻译,若使用gets()函数,会显示"Compile Error",而使用getline()函数后,就可以"Accepted"了!