Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Membaca Seluruh Baris Input Termasuk Ruang dengan C \'s `cin`?

Bagaimana untuk Membaca Seluruh Baris Input Termasuk Ruang dengan C \'s `cin`?

Patricia Arquette
Lepaskan: 2024-10-29 07:49:02
asal
708 orang telah melayarinya

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

C "cin" Hanya Membaca Perkataan Pertama

Dalam C , pengendali aliran input >> lazimnya membaca satu perkataan daripada sumber input seperti papan kekunci. Ini boleh menjadi masalah apabila cuba membaca rentetan yang mengandungi ruang, kerana hanya perkataan pertama akan ditangkap. Isu ini boleh dihadapi semasa bekerja dengan tatasusunan aksara.

Pertimbangkan kod berikut:

<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;
}
Salin selepas log masuk

Apabila menjalankan kod ini dalam Turbo C 4.5, hanya perkataan pertama rentetan dipaparkan. Ini kerana cin >> str hanya membaca satu perkataan ke dalam tatasusunan aksara str. Untuk membaca baris input yang lengkap, termasuk ruang, pendekatan alternatif diperlukan.

Satu pilihan ialah menggunakan fungsi 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>
Salin selepas log masuk

Kod ini akan membaca keseluruhan baris input, termasuk ruang, ke dalam rentetan s. getline() juga boleh digunakan untuk membaca ke dalam tatasusunan aksara:

<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;
}
Salin selepas log masuk

Sebagai alternatif, jika anda lebih suka menggunakan >> operator, anda boleh mengubah suai kod seperti berikut:

<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>
Salin selepas log masuk

Dengan pengubahsuaian ini, kod akan membaca dan memaparkan keseluruhan rentetan input dengan betul.

Atas ialah kandungan terperinci Bagaimana untuk Membaca Seluruh Baris Input Termasuk Ruang dengan C \'s `cin`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan