Đây là chương trình Đọc chuỗi từ bàn phím và in chuỗi ra màn hình trong C.
#include <stdio.h>
int main() {
// Tao mot chuoi
char hoTen[30];
// Hoi tên ngươi su dung
printf("Ten ban là gi: \n");
// Nhan ten tu ban phim
fgets(hoTen, sizeof(hoTen), stdin);
// In ra man hinh
printf("Xin chao: %s", hoTen);
return 0;
}
Vận dụng phong cách...tào lao đã đạt tới trình độ thượng thừa, ta sửa lại trong C++ như sau:
#include <iostream>
#include <string>
using namespace std;
int main(){
// Tao mot chuoi
string hoTen;
// Hoi tên ngươi su dung
cout <<"Ten ban là gi: " << endl;
// Nhan ten tu ban phim
cin >> hoTen;
// In ra man hinh
cout << "Xin chao: "<< hoTen << endl;
}
Kết quả ổn, nhưng hơi...sai! Rõ ràng chúng ta nhập vào là Nguyen Van A, nhưng khi in ra thì chỉ vỏn vẹn là Nguyen??
Cũng như scanf trong C, với cin trong C ++ ở đây khoảng trắng " " sẽ được xem là ký tự kết thúc nên tất cả phía sau bị loại bỏ.
Khi chúng ta muốn đọc chuỗi trong C++ đến hết dòng (đọc hết cả dấu cách, tab) thì bạn cần dùng hàm getline()
Cú pháp :
getline(cin, string, delimiter);
Nếu getline() không có tham số thứ 3 thì mặc định nó sẽ là dấu enter.
Chúng ta sẽ thay bằng lệnh getline(cin, hoTen);
Đây là chương trình
#include <iostream>
#include <string>
using namespace std;
int main(){
// Tao mot chuoi
string hoTen;
// Hoi tên ngươi su dung
cout <<"Ten ban là gi: " << endl;
// Nhan ten tu ban phim
getline(cin, hoTen);
// In ra man hinh
cout << "Xin chao: "<< hoTen << endl;
}
Chạy thử, kết quả như mong đợi:
Trong trường hợp chúng ta thêm tham số thứ 3 cho getline() thì nó sẽ đọc từ luồng cin cho tới khi gặp kí tự là tham số thứ 3 mà bạn truyền vào hàm.
Chúng ta thử thêm tham số thứ 3 như sau:
#include <iostream>
#include <string>
using namespace std;
int main(){
// Tao mot chuoi
string hoTen;
// Hoi tên ngươi su dung
cout <<"Ten ban là gi: " << endl;
// Nhan ten tu ban phim
getline(cin, hoTen, 'n');
// In ra man hinh
cout << "Xin chao: "<< hoTen << endl;
}
Kết quả in ra chỉ là Nguye
Không có nhận xét nào:
Đăng nhận xét