PDA

View Full Version : Nhập khoảng trắng trong Class C++



nguyentung2k9
06-12-2011, 04:42 PM
Mọi người cho em hỏi muốn nhập khoảng trắng trong lass C++ thì làm thế nào ? em có tìm trên diễn đàn thì có bạn nói làm như thế này:

char s[10];
std::cin.getline( s, 10 );
or
string s;
std::getline( cin, s );
nhưng em làm thì lại không được.
Đây là source code của em.em chỉ lấy ví dụ là nhập tên sinh viên có khoảng trắng, ai biết thì mong chỉ em:

#include "iostream"
#include "conio.h"
using namespace std;
class sinhvien
{
private:
char ho_ten[30];
int mssv,diem,nam_sinh;
public:
void nhap();
void xuat();
};
void sinhvien::nhap()
{
cout<<"MSSV:";cin>>mssv;
cout<<"Ho Ten:";std::cin.getline(ho_ten,30);
}
void sinhvien::xuat()
{
cout<<mssv;
cout<<"\n";
cout<<ho_ten;
}
void main()
{
sinhvien a;
a.nhap();
a.xuat();
getch();
}

mp121209
06-12-2011, 04:50 PM
ng ta hướng dẫn sao thì em làm theo thế chứ em chỉnh sửa đi nó sai là đúng rồi!
sửa cái đoạn
std::cin.getline(hoten,30)
thành
getline(std::cin,hoten)
//---

istream& getline ( istream& is, string& str, char delim );
istream& getline ( istream& is, string& str );
Đúng ra thì phải được chứ sao lại không được nhỉ. delim trong trường hợp default sẽ là '\n' tức là khi gặp kí tự enter trên dòng nhập.
Bạn có thể tham khảo ở đây (http://www.cplusplus.com/reference/iostream/istream/getline/)

nguyentung2k9
06-12-2011, 04:59 PM
ng ta hướng dẫn sao thì em làm theo thế chứ em chỉnh sửa đi nó sai là đúng rồi!
sửa cái đoạn
std::cin.getline(hoten,30)
thành
getline(std::cin,hoten)
Em sửa rồi mà không được.

'getline': identifier not found

mp121209
06-12-2011, 05:05 PM
std::getline
Vì getline là method của istream mà em!
//----
Tham khảo nhé!

#include <iostream>
#include <string>

int main(int argc, char ** argv) {
// using string
std::string str;
std::getline(std::cin, str);
std::cout << str << std::endl << std::flush;

// using char *
char cstr[30];
std::cin.getline(cstr, 30, '\n');
std::cout << cstr << std::endl << std::flush;

// using string, convert to char *
std::getline(std::cin, str);
strcpy(cstr,str.c_str());
std::cout << cstr << std::endl << std::flush;

return 0;
}

dong_song_rac
20-12-2011, 04:43 PM
vấn đề này mình củng đã từng gặp !
getline(); là ok