ホームページ >バックエンド開発 >C++ >なぜ「cin」はユーザー入力の最初の単語だけを読み取るのでしょうか?

なぜ「cin」はユーザー入力の最初の単語だけを読み取るのでしょうか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-06 01:59:11557ブラウズ

Why Does `cin` Only Read the First Word of User Input?

cin を使用したユーザーからの完全な行の読み取り

cin を使用してユーザー入力の完全な行を読み取ろうとしたとき、開発者は、最初の単語だけがキャプチャされるという問題によく遭遇します。この問題に対処するには、行抽出に正しい方法を利用することが不可欠です。

指定された C コードでは、cin >> を採用しています。 y; はユーザー入力を収集します。ただし、このアプローチでは最初のスペース文字までしか読み取られないため、単一の単語のみがキャプチャされます。

入力行全体を効果的に読み取るには、getline(cin, response) の使用に切り替えます。 ;。コードの更新バージョンは次のとおりです。

#include <iostream>
#include <string>

using namespace std;

int main()
{
    char x;

    cout << "Would you like to write to a file?" << endl;
    cin >> x;
    if (x == 'y' || x == 'Y')
    {
        string response;
        cout << "What would you like to write." << endl;
        getline(cin, response); // Use getline instead of cin >>
        ofstream file;
        file.open("Characters.txt");
        file << strlen(response) << " Characters." << endl;
        file << endl;
        file << response;

        file.close();

        cout << "Done. \a" << endl;
    }
    else
    {
        cout << "K, Bye." << endl;
    }
}

getline を利用することで、入力行全体を効果的にキャプチャできるようになり、単一の単語のみを読み取る問題が解決されました。

以上がなぜ「cin」はユーザー入力の最初の単語だけを読み取るのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。