Program C++ untuk mendapatkan input daripada pengguna

WBOY
Lepaskan: 2023-09-08 16:17:02
ke hadapan
1067 orang telah melayarinya

Program C++ untuk mendapatkan input daripada pengguna

Apabila menulis program dalam mana-mana bahasa pengaturcaraan, menerima input adalah tugas asas yang kami lakukan dalam hampir semua program. Kadangkala kami mendapat input terus daripada konsol dan kadangkala kami mendapat input daripada fail. Mendapatkan input daripada fail mempunyai faedah tertentu kerana ia tidak memerlukan kita menaipnya berulang kali dan kadangkala kita boleh menyimpan beberapa kes ujian input yang baik pada fail. Walau bagaimanapun, dalam artikel ini kita akan menumpukan pada input berasaskan konsol. Kami akan mempelajari teknik yang berbeza untuk mendapatkan input daripada pengguna dalam C++.

Terdapat beberapa cara berbeza untuk mendapatkan input daripada konsol. Sebahagian daripadanya adalah kaedah seperti C, manakala yang lain menggunakan aliran input yang wujud dalam C++. Kami akan mengupasnya satu persatu dan memberikan beberapa contoh untuk pemahaman yang lebih baik.

Gunakan fungsi scanf() untuk menerima input

Dalam bahasa C, kami menggunakan fungsi scanf() untuk mengimbas input daripada konsol dalam bentuk rentetan berformat. Fungsi ini juga tersedia dalam C++, jadi untuk menerima input dalam cara yang diformat, anda boleh menggunakan kaedah scanf().

Tatabahasa

Sintaks asas kaedah scanf(), termasuk rentetan format.

scanf ( “<format string>”, <address of variable> );
Salin selepas log masuk

scanf() penentu format format.

Terjemahan bahasa Cina bagi ialah:
Penentukan formatDescriptionDescription
%c Untuk input aksara tunggal
%s Untuk rentetan tanpa ruang
%Hai Integer yang ditandatangani pendek
%hu Integer tak bertanda pendek
%Lf Berganda panjang
%d Integer perpuluhan (ditandatangani), dengan andaian asas 10
%i Integer (dasar pengesanan automatik)
%o Integer oktal
%x Integer heks
%p Penunjuk
%f Nombor titik terapung
Terjemahan bahasa Cina bagi

Contoh 1

ialah:

Contoh 1

#include <iostream>
using namespace std;

void takeInput() {
   int x;
   char s[50]; // C like string or character array
   char c;
   float f;

   cout << "Enter an integer: ";
   scanf( "%d", &x );
   cout << "\nYou have entered an integer: " << x << endl;
   cout << "Enter a character: ";
   scanf( " %c", &c );
   cout << "\nYou have entered a character: " << c << endl;
   cout << "Enter a float value: ";
   scanf( "%f", &f );
   cout << "\nYou have entered float value: " << f << endl;
   cout << "Enter a string: ";
   scanf( "%s", s ); //string do not need address

   //convert to C++ like string from C like string
   string SCpp;
   SCpp.assign(s);
   cout << "\nYou have entered the string: " << SCpp << endl;
}

int main(){
   takeInput();
}
Salin selepas log masuk

Output

Enter an integer: 5
You have entered an integer: 5
Enter a character: K
You have entered a character: K
Enter a float value: 2.56
You have entered float value: 2.56
Enter a string: HelloWorld
You have entered the string: HelloWorld
Salin selepas log masuk

Dalam kaedah ini, ia berfungsi untuk jenis data lain, tetapi untuk rentetan, ia hanya menerima rentetan seperti C atau tatasusunan aksara. Untuk memaparkan rentetan menggunakan "cout" kita perlu menukarnya kepada objek rentetan seperti C++. Jika tidak, kita boleh menggunakan fungsi printf() untuk memaparkan output. Ini adalah contoh asas. Sekarang mari kita lihat kesan pemformatan rentetan dalam contoh seterusnya.

Contoh 2

diterjemahkan sebagai:

Contoh 2

#include <iostream>
using namespace std;
void takeInput() {
   int dd, mm, yyyy;
   cout << "Enter a date in dd-mm-yyyy format: ";
   scanf( "%d-%d-%d", &dd, &mm, &yyyy );
   cout << "\nThe given date is: ";
   printf( "%d/%d/%d", dd, mm, yyyy );
}

int main(){
   takeInput();
}
Salin selepas log masuk

Output

Enter a date in dd-mm-yyyy format: 14-10-2022
The given date is: 14/10/2022
Salin selepas log masuk

Dalam contoh ini, kami menerima input dalam borang (dd-mm-yyyy), ia tidak akan menerima sebarang format lain untuk tiga nilai integer ini. Dan dalam output kami, kami memaparkan tarikh yang sama dalam format lain (dd/mm/yyyy). Inilah yang sebenarnya digunakan untuk input rentetan terformat. Seterusnya, kita akan melihat bentuk yang lebih mudah menggunakan aliran input "cin" untuk memasukkan secara langsung sebarang jenis data ke dalam pembolehubah yang ditentukan.

Gunakan cin untuk menerima input dalam C++

cin ialah kelas aliran input C++ yang menggunakan operator pengekstrakan >> untuk mendapatkan input daripada aliran. Operator ini secara automatik memasukkan nilai ke dalam pembolehubah yang ditentukan dengan mendapatkan input daripada konsol. Sintaksnya adalah seperti berikut.

Tatabahasa

Sintaks asas kaedah cin

cin >> <input variable name>
Salin selepas log masuk
Terjemahan bahasa Cina bagi

Contoh 1

ialah:

Contoh 1

#include <iostream>
using namespace std;

void takeInput() {
   int x;
   string s;
   char c;
   float f;

   cout << "Enter an integer: ";
   cin >> x;
   cout << "\nYou have entered an integer: " << x << endl;
   cout << "Enter a character: ";
   cin >> c;
   cout << "\nYou have entered a character: " << c << endl;
   cout << "Enter a float value: ";
   cin >> f;
   cout << "\nYou have entered float value: " << f << endl;
   cout << "Enter a string: ";
   cin >> s;
   cout << "\nYou have entered the string: " << s << endl;
}
int main(){
   takeInput();
}
Salin selepas log masuk

Output

Enter an integer: 8
You have entered an integer: 8
Enter a character: L
You have entered a character: L
Enter a float value: 3.14159
You have entered float value: 3.14159
Enter a string: WeAreLearningC++InputTaking
You have entered the string: WeAreLearningC++InputTaking
Salin selepas log masuk

Seperti pembolehubah lain, kita boleh menggunakan rentetan secara langsung dan bukannya menjadikannya sebagai tatasusunan aksara. Dalam kaedah ini, ia secara automatik memberikan input yang diberikan kepada objek rentetan. Walau bagaimanapun, terdapat masalah dengan rentetan. Kami tidak boleh memasukkan rentetan berbilang perkataan dengan cara ini. Jika kita menulis rentetan berbilang perkataan, ia hanya akan mengambil perkataan pertama. Mari kita lihat ini dalam contoh di bawah.

Contoh 2

diterjemahkan sebagai:

Contoh 2

#include <iostream>
using namespace std;
void takeInput() {
   string s;
   cout << "Enter a string: ";
   cin >> s;
   cout << "\nYou have entered the string: " << s << endl;
}
int main(){
   takeInput();
}
Salin selepas log masuk

Output

Enter a string: Hello World, This is a nice day
You have entered the string: Hello
Salin selepas log masuk

Untuk mengatasi masalah ini, kita perlu menggunakan fungsi getline() untuk mendapatkan rentetan yang dibatasi ruang. Dalam kaedah ini ia menamatkan pembacaan teks apabila aksara baris baharu ditemui.

Tatabahasa

getline(std::cin, <string variable>)
Salin selepas log masuk
Terjemahan bahasa Cina bagi

Contoh 3

ialah:

Contoh 3

#include <iostream>
using namespace std;

void takeInput() {
   string s;
   cout << "Enter a string: ";
   getline(cin, s);
   cout << "\nYou have entered the string: " << s << endl;
}
int main(){
 takeInput();
}
Salin selepas log masuk

Output

Enter a string: Hello World, Have a nice day
You have entered the string: Hello World, Have a nice day
Salin selepas log masuk

Kesimpulan

Dalam artikel ini, kami telah melihat penggunaan yang berbeza untuk membaca input pengguna menggunakan kaedah scanf() dan aliran cin. Menetapkan input kepada jenis pembolehubah lain adalah mudah. Walau bagaimanapun, penentu format %s mahupun kelas cin tidak menerima rentetan input dengan ruang. Seperti bahasa C, terdapat fungsi yang ditetapkan dalam C++ untuk membaca rentetan dengan perkataan yang dipisahkan oleh ruang. Anda boleh menggunakan kaedah getline() untuk menerima rentetan input ini. Kami juga boleh mendapatkan input daripada fail dan aliran rentetan.

Atas ialah kandungan terperinci Program C++ untuk mendapatkan input daripada pengguna. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan