Cでstringクラスを使用して入力と出力

2513 ワード

問題説明:C言語を考慮した入出力の効率はC++より高いが、stringクラスはC++言語での使用が効果的であるため、開発ではC言語を使用した入出力stringタイプが望ましいが、C言語ではstringクラスを直接操作できないため、stringクラスデータの処理が必要である.
       解决の考え方:考え方の1:よく知られているC言语の文字列のタイプは(char*)で対応するC++の中で実质的にstringのタイプは(char*)のパッケージです.ではstring.hファイルのメソッド(c_str()、assign(int,char))を使用します.文字列に値を付ける操作を行います.考え方2:C言語には文字列の入出力関数(char*gets(char*)、int puts(char*)も提供されます.
考え方一、
 関数の概要:
一、c_str()は「0」で終わる文字配列を返します.二、s.assign(int n,char’x')//n個のxを文字列に割り当てます.
コードは次のとおりです.
//                   
string str;
str.assign(100,'
'); // 100 , ‘\0' 。 scanf("%s",str.c_str()); printf("%s
",str.c_str());

考え方二、
関数の概要:
char *gets(char *buffer):           機能:stdinストリームから文字列を読み出し、改行またはEOFが受け入れられるまで停止し、bufferポインタが指す文字配列に読み出しの結果を格納します.改行は読み出し列の内容ではなく、読み出した改行はnull値に変換され、文字列を終了します.         戻り値:読み込みに成功し、パラメータbufferと同じポインタを返します.読み込み中にEOF(End-of-File)に遭遇したり、エラーが発生したりして、NULLポインタを返します.したがって、戻り値がNULLの場合、ferrorまたはfeof関数でエラーが発生したかEOFに遭遇したかを確認します.        説明:上限は判断されませんので、プログラマはbufferのスペースが十分に大きいことを確保して、読み取り操作を実行するときにオーバーフローが発生しないようにします.オーバーフローすると、より多くの文字がスタックに書き込まれ、スタックの元の内容が上書きされ、1つ以上の関連しない変数の値が破壊されます.これを避けるためにgets_s()でgets()を置き換えることができます.(注:C++11はgets()の代わりにgets_s()を使用することを明確に説明しています.gets_s()の場合はここで説明しません.詳細については著者に連絡するか、インターネットで資料を参照してください.
int puts(char *str):           機能:文字列のセット(str)を印刷します.        戻り値:出力された文字列の長さ、出力に失敗した場合の戻り値はEOF
//                   
char str[100]; //       100,               ,      。
gets(str);
puts(str);

添付:
++によって提供されるC++文字列によって対応するC_stringを得る方法は、data()、c_str()およびcopy()を使用することであり、data()は文字配列の形で文字列の内容を返すが、'0'は追加されない.c_str()は'0'で終わる文字配列を返し、copy()は既存のc_stringまたは文字配列に文字列の内容をコピーまたは書き込みます.C++文字列は'0'で終わりません.やむを得ずc_stringを選択しない限り、プログラムでC++文字列を使用することをお勧めします.
内容の変更:文字列の操作で大きな部分を占めています.まず、割り当てについて説明します.最初の割り当て方法は、もちろんオペレータ=を使用します.新しい値はstring(s=nsなど)、c_string(s="gaint")、さらには単一文字(s='j')です.メンバー関数assign()を使用することもできます.ああ、このメンバー関数は文字列に柔軟に値を割り当てることができます.例を挙げて説明しましょう.
s.assign(str);//s.assign(str,1,3);////strが「beatuful_girl」であれば「eat」を文字列s.assign(str,2,string::love);//////////////////////////////////////////////////////////////////////////////s.assign("nice",5);////////'n''‘i'''''''''0'を文字列s.assign("5,'x')//////////////////////////////////////////////////////////////////////////5つのxを文字列に割り当てる
著者は初心者で、文章に不正があったり、指摘を修正したりできる場合は著者に連絡してください.