Đọc dữ liệu từ file trên C++

Mình mới làm quen với việc làm việc cùng file. Nhưng giờ đang vướng 1 việc như sau.
Mình có 1 file tên vidu.txt lưu cùng thư mục với file .cpp. có bộ dữ liệu là

1 2 3 4 5 6 7 8 9 10

giờ muốn nhập dữ liệu này vào mảng thì làm thế nào vậy.
Mình cảm ơn

n = 0;
while (cin >> a[n]) n++;

// hoặc có thể thay bằng while(cin >> a[n++]){}
// nhưng mình không biết có chạy được không

Đây là nhập dữ liệu từ file vào mà bạn, sao lại thế này ??

Oops, quên mất.

Nếu bạn mở file bằng freopen thì dùng luôn cin. Nếu dùng ifstream thì

ifstream fi;
// khai báo fi
while (fi >> a[n]) n++;

Còn nếu bạn mở file theo phong cách C thì bạn cũng làm tương tự.

Mình thử vẫn không được. Bạn thử viết cả ra cho mình xem với. Đây là đề bài

Không được là không được như thế nào?

chả có gì cả, dữ liệu phải nhập bằng tay, nó không tự đọc từ file

Bạn có thể up code lên không?

>  #include < iostream>
>  #include < fstream>
> using namespace std;
> int main ()
> {
>     ifstream doc;
>     ofstream xuat;
>     int a[256];
>     doc.open ("vidu.txt");
>         int n = 0;
>         while (doc >> a[n]) n++;
>     doc.close ();
>     // xuât thử mảng
>     for ( int i = 0 ; i < 10; i++)
>     {
>         cout << a[i]<< " ";
>     }
>     return 0;
> }

file txt mình lưu cùng thư mục với file này. dữ liệu là 1 2 3 4 5 6 7 8 9 10

Mình tưởng file của bạn là vidu.txt chứ?

Bạn thử kiểm tra lại cú pháp mở file với chế độ đọc hay chưa.

chế độ đọc là sao vậy ?

Chế độ đọc là file được mở sẵn để chuẩn bị đọc dữ liệu, con trỏ file ở đầu file.
Hình như bạn đang mở file ở chế độ ghi (file sẽ bị xoá hết nội dung cũ, chuẩn bị để ghi dữ liệu mới).

cái xóa hêt dữ liệu cũ để ghi dữ liệu mới thì hình như là của ofstream chứ. Còn ifstream thì chỉ mở file để đọc thôi mà.
Mình thử dùng lệnh fail kiểm tra thì mở file thất bại

Thử sửa thành

if.open("vidu.txt", std::ifstream::in);

xem

Và đây là kết quả

Mình cũng không hiểu tại sao.

File vidu.txt:

1 2 3 4 5 6 7 8 9 10 111

Code của mình:

#include <bits/stdc++.h>
using namespace std;

int n = 0;
int a[500];

int main() {
	ifstream fi("vidu.txt", ifstream::in);
	while (fi >> a[n]) n++;

	cout << n << endl;
	for (int i=0; i<n; i++) cout << a[i] << " ";
	cout << endl;

	fi.close();
}

Kết quả:

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