Chào các anh(chị, bạn)
Em đang thắc mắc 1 vấn đề nhỏ giữa hàm getline và cin.getline trong c++ như sau:
đầu tiền e có 1 chương trình sau:
#include <iostream>
#include <string>
using namespace std;
main()
{
string strTen;
char strHo[50];
char cKitu;
int iTuoi;
cout <<"Nhap tuoi ";
cin>> iTuoi;
cout <<"Nhap ki tu ";
cin.ignore(1);
cin.get(cKitu);
cout <<"Nhap ten ";
fflush(stdin);
getline(cin, strTen);
cout <<"Nhap ho ";
cin.getline(strHo,5);
cout <<"Tuoi "<<iTuoi<<endl<<"Ki tu "<<cKitu<<endl<<"Ten "<<strTen<<endl<<"Ho "<<strHo<<endl;
system("pause");
return 0;
}
trong chương trình có 2 biến
string strTen;
char strHo[50];
vấn đề e muốn hỏi là
biến strTen được khai báo với kiểu dữ liệu string
( trong khai báo header string đã có typedef cho kiểu dữ liệu xâu nhưng e k biết nó typedef bao nhiêu phần tử cho xâu và cũng k rõ lắm về header string typedef như thế nào ?)
khi dùng biến strTen với lênh sau thì vẫn ổn
getline(cin, strTen);
(chép hết dữ liệu từ stdin vào biến strTen)
nhưng khi dùng biến strTen với lênh sau khi không được
cin.getline(strTen,5);
(cho phép nhập 5-1 kí tự vào xâu strTen)
và ngược lại
với biến strHo được khai báo char strHo[50];
thì dùng với lệnh sau thì ổn
cin.getline(strHo,5);
nhưng dùng với lệnh
`getline(cin, strHo);
thì lại k được
kết: tại sao với biến khai báo :
#include <string>
string strTen;
thì chỉ dung được với
getline(cin, strTen);
không dùng được với cin.getline(strTen,5);
và ngược lại
với khai báo biến char strHo[50];
thì chỉ dùng được với cin.getline(strHo,5);
không dùng được với getline(cin, strHo);
sự khác nhau ở đây là gì?
tiện thể giải thích giúp e trong header string nó làm gì trong đó luôn ạ
XINCAMON