Lỗi không sử dụng được hàm getline

#include <iostream>

using namespace std;
#include <string>

#define MAX 50

struct SinhVien
{
	string hoten[MAX];
	float diem;
	string mssv[MAX];
};

struct DanhSach
{
	SinhVien node[MAX];
	int n;
};

void Initilize(DanhSach &ds);
int Empty(DanhSach ds);
int Full(DanhSach ds);
void Read(DanhSach &ds);

void main()
{

}

void Initilize(DanhSach &ds)
{
	ds.n == 0;
}

int Empty(DanhSach &ds)
{
	return ds.n == 0 ? 1 : 0;
}

int Full(DanhSach ds)
{
	return ds.n == MAX ? 1 : 0;
}

void Read(DanhSach &ds)
{
	cout << "Nhap so luong sinh vien: ";
	cin >> ds.n;
	cout << "\n\t\t\tNHAP THONG TIN SV";
	for (int i = 0; i < ds.n; i++)
	{
		cout << "Nhap ho ten sv: ";
		getline(cin, ds.node[i].hoten);
		cin >> ds.node[i].diem;
	}
}

Có nhầm lẫn với C ở đây, theo bạn thì std::string hoten là gì? :v còn std::string hoten[MAX] là gì?

1 Like

Hồi trước dùng bình thường mà, sao tự nhiên hôm nay dùng bị lỗi

Bạn đọc lại cách sử dụng getline đi, nó chỉ nhận std:string thôi.

istream& getline (istream& is, string& str, char delim);
istream& getline (istream& is, string& str);

1 Like

Rồi reply của bạn đâu có liên quan gì đến câu hỏi của mình đâu ?! Một cái là “chuỗi” và một cái là “mảng chuỗi”, bạn nhầm lẫn với “mảng ký tự” trong C rồi :v tự nhiên kêu std::getline đi lấy 1 dòng đắp vào cái “mảng chuỗi” thì phải đắp như nào? :joy:

1 Like

Tức là hồi trước bạn dùng sai cách, nhưng vô tình nó vẫn chạy được.

1 Like

Chắc nhớ nhầm với istream::getline :smiley:

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?