> 通常從輸入來源讀取單字,例如..."/> > 通常從輸入來源讀取單字,例如...">

首頁 >後端開發 >C++ >如何使用 C 的 `cin` 讀取包括空格在內的整行輸入?

如何使用 C 的 `cin` 讀取包括空格在內的整行輸入?

Patricia Arquette
Patricia Arquette原創
2024-10-29 07:49:02717瀏覽

How to Read Entire Lines of Input Including Spaces with C  's `cin`?

C "cin" 只讀取第一個單字

在C 中,輸入流運算子>>通常從輸入來源(例如鍵盤)讀取單字。當嘗試讀取包含空格的字串時,這可能會出現問題,因為只會捕獲第一個單字。使用字元數組時可能會遇到此問題。

請考慮以下程式碼:

<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 字元陣列。要讀取完整的輸入行(包括空格),需要另一種方法。

一個選項是使用 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>

或者,如果您喜歡使用>>運算符,您可以如下修改程式碼:

<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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn