川のブログ

川の適当気ままなブログです。 

AOJ 0101 Aizu PR

こんにちは川です。

気分転換にvolume1を解いています。

今回もgetlineで文章を入力しているんですが、変数nを入力する際、8行目の記述がないとfor文の中のgetlineがの改行文字を受け取ってしまいます。つまり、「3\n」と打つと7行目で無視される「\n」の部分がfor文のgetlineで受け取ってしまうということです。

8行目の記述で改行文字を含めて1文字読み飛ばしています。

詳しいことが知りたい方は下のほうにリンクを張っておきますので見てください。

 

リンク

プログラミングのテクニック/入力の処理(C,C++) - 競技プログラミング Wiki*

 

ソースコード

 

#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
string str,Hoshino="Hoshino";
cin>>n;
cin.ignore();
for(int i=0;i<n;i++){
getline(cin,str);
for(int j=0;str[j]!='\0';j++){
if(str[j]=='H'){
for(int k=j;k<7+j;k++){
if(str[k]!=Hoshino[k-j])break;
if(k==j+6)str[k]='a';
}
}
}
cout<<str<<endl;
}
}