C "cin" は最初の単語のみを読み取ります
C では、入力ストリーム演算子 >> が使用されます。通常、キーボードなどの入力ソースから 1 つの単語を読み取ります。最初の単語のみがキャプチャされるため、スペースを含む文字列を読み取ろうとする場合に問題が発生する可能性があります。この問題は、文字配列を操作しているときに発生する可能性があります。
次のコードを考えてみましょう:
<code class="c++">#include <iostream.h> #include <conio.h> class String { char str[100]; public: void input() { cout << "Enter string :"; cin >> str; } void display() { cout << str; } }; int main() { String s; s.input(); s.display(); return 0; }
このコードを Turbo C 4.5 で実行すると、文字列の最初の単語のみが表示されます。これは、cin>>だからです。 str は、str 文字配列に 1 つの単語だけを読み取ります。スペースを含む入力行全体を読み取るには、別のアプローチが必要です。
1 つのオプションは、getline() 関数を使用することです。
<code class="c++">#include <iostream> #include <string> using namespace std; int main() { string s; cout << "Enter string :"; getline(cin, s); cout << s; return 0; }</code>
このコードは行全体を読み取ります。 s 文字列への入力 (スペースを含む)。 getline() を使用して文字配列を読み取ることもできます。
<code class="c++">#include <iostream.h> #include <conio.h> int main() { char str[100]; cout << "Enter string :"; cin.getline(str, sizeof str); cout << str; return 0; }
あるいは、>> を使用したい場合は、
<code class="c++">#include <iostream.h> #include <conio.h> class String { char str[100]; public: void input() { cout << "Enter string :"; cin.getline(str, sizeof str); } void display() { cout << str; } }; int main() { String s; s.input(); s.display(); return 0; }</code>
これらの変更により、コードは入力文字列全体を正しく読み取って表示します。
以上がC \ の `cin` を使用してスペースを含む入力行全体を読み取る方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。