C/C++行全体に文字列を読み込むにはどうすればいいですか?
3439 ワード
コードを書く過程で、よく1行1行の読み込み文字列を処理します.ここでは、参考にする方法をまとめました.
方法1:scanf()char[]を読み込む
使用方法:
説明:scanf関数では、%cを使用して文字を読み取り、%sを使用して文字列を読み込むことができますが、文字列を読み込むときはスペースを無視せず、文字列を読むときは最初のスペースを無視し、スペースまで読むので、行全体ではなく単語を1つしか読めません.
実はscanf関数もこのような機能を完成することができて、しかも更に強大です.ここでは主に1つのパラメータ,%[]を紹介し,このパラメータの意味は1つの文字集合を読み込むことである.[]は集合のフラグであるため、%[]は特にこの集合に限定された文字を読み込むことを指し、例えば%[A-Z]は大文字を入力し、この集合でない文字に遭遇すると停止する.集合の最初の文字が"^"である場合、これは"^"の後ろに集合していない文字を読み取ることを意味し、"^"の後ろの集合の文字に遭遇すると停止します.注意このとき読み込まれた文字列にはスペースを含めることができ、先頭のスペースも読み込まれます.
注意:画面から1行を複数回繰り返す場合は、1行を読み出した後、%cで1文字を読み出し、入力バッファの改行を読み出します.そうでなければ、次の行を読み込むときに、最初に「」と出会って、マッチングに失敗してそのまま戻ります.ここではscanf()またはgetchar()関数で改行文字を読み込むことができます.
方法2:getchar()char[]を読み込む
使用方法:
説明:このように1つずつ読んでもいいし、冒頭のスペースも読めます.最後に改行も考慮してgetchar()を使って読み出す必要があります.
方法3:gets()char[]を読み込む
使用方法:
説明:これが複数のgetcharの集合関数だと感じて、使いやすいです.機能は、標準入力キーボードから完全な行(標準入力から読み、改行に遭遇するまで読む)を読み込み、読み上げた内容をかっこで指定した文字配列に格納し、行末の改行文字の代わりに空の文字'0'を使用することです.読み込み時に改行を考慮する必要はありません.
方法4:getline()stringまたはchar[]を読み込む
使用方法:
説明:これは比較的よく使われる方法です.cin.getlineの3番目のパラメータは間隔記号を表し、デフォルトは改行記号'.最後の改行を考慮する必要はありません.
方法5:get()char[]を読み込む
使用方法:
説明:get関数の読み込みには最後の改行を考慮する必要がある、すなわち、getで複数行のデータを読み込む場合は、「別に読み出す」にcinを用いるのが一般的である.get(str,1024).get();を参照してください.
作者:AlvinZH
出典:http://www.cnblogs.com/AlvinZH/
本人Github:https://github.com/Pacsiy/JobDu
本文の著作権は著者のAlvinZHとブログ園の所有に帰属し、転載と商用を歓迎するが、著者の同意を得ずにこの声明を保留し、文章のページの明らかな位置で原文の接続を与えなければならない.そうしないと、法律責任を追及する権利を保留する.
転載先:https://www.cnblogs.com/AlvinZH/p/6798023.html
方法1:scanf()char[]を読み込む
使用方法:
char str[1024];
scanf("%[^
]",&str);
getchar();
説明:scanf関数では、%cを使用して文字を読み取り、%sを使用して文字列を読み込むことができますが、文字列を読み込むときはスペースを無視せず、文字列を読むときは最初のスペースを無視し、スペースまで読むので、行全体ではなく単語を1つしか読めません.
実はscanf関数もこのような機能を完成することができて、しかも更に強大です.ここでは主に1つのパラメータ,%[]を紹介し,このパラメータの意味は1つの文字集合を読み込むことである.[]は集合のフラグであるため、%[]は特にこの集合に限定された文字を読み込むことを指し、例えば%[A-Z]は大文字を入力し、この集合でない文字に遭遇すると停止する.集合の最初の文字が"^"である場合、これは"^"の後ろに集合していない文字を読み取ることを意味し、"^"の後ろの集合の文字に遭遇すると停止します.注意このとき読み込まれた文字列にはスペースを含めることができ、先頭のスペースも読み込まれます.
注意:画面から1行を複数回繰り返す場合は、1行を読み出した後、%cで1文字を読み出し、入力バッファの改行を読み出します.そうでなければ、次の行を読み込むときに、最初に「」と出会って、マッチングに失敗してそのまま戻ります.ここではscanf()またはgetchar()関数で改行文字を読み込むことができます.
方法2:getchar()char[]を読み込む
使用方法:
char str[1024];
int i=0;
while((str[i]=getchar())!='
')
i++;
getchar();
説明:このように1つずつ読んでもいいし、冒頭のスペースも読めます.最後に改行も考慮してgetchar()を使って読み出す必要があります.
方法3:gets()char[]を読み込む
使用方法:
char str[1024];
gets(str);
説明:これが複数のgetcharの集合関数だと感じて、使いやすいです.機能は、標準入力キーボードから完全な行(標準入力から読み、改行に遭遇するまで読む)を読み込み、読み上げた内容をかっこで指定した文字配列に格納し、行末の改行文字の代わりに空の文字'0'を使用することです.読み込み時に改行を考慮する必要はありません.
方法4:getline()stringまたはchar[]を読み込む
使用方法:
string str;
getline(cin,str);// string
char str2[1024];
cin.getline(str2,1024);// char
説明:これは比較的よく使われる方法です.cin.getlineの3番目のパラメータは間隔記号を表し、デフォルトは改行記号'.最後の改行を考慮する必要はありません.
方法5:get()char[]を読み込む
使用方法:
char str3[1024];
cin.get(str3,1024);// char
説明:get関数の読み込みには最後の改行を考慮する必要がある、すなわち、getで複数行のデータを読み込む場合は、「別に読み出す」にcinを用いるのが一般的である.get(str,1024).get();を参照してください.
作者:AlvinZH
出典:http://www.cnblogs.com/AlvinZH/
本人Github:https://github.com/Pacsiy/JobDu
本文の著作権は著者のAlvinZHとブログ園の所有に帰属し、転載と商用を歓迎するが、著者の同意を得ずにこの声明を保留し、文章のページの明らかな位置で原文の接続を与えなければならない.そうしないと、法律責任を追及する権利を保留する.
転載先:https://www.cnblogs.com/AlvinZH/p/6798023.html