01/10/2018, 00:29

Lỗi Invalid conversion from 'int' to 'std::ios_base::seekdir { aka std::_Ios_seekdir}' trong CodeBlocks

Hi mọi người,

Em có viết 1 đoạn code nhỏ tính tổng 2 phân số nhập từ file INPUT và xuất kết quả xuất ra file OUTPUT

INPUT.txt

1/2
3/4

OUTPUT.txt

5/4

Source code:

#include <iostream>
#include <fstream>

int UCLN(int a, int b) // dùng thuật toán Euclid
{
    if (a % b == 0)
        return b;
    return UCLN(b, a % b);
}
int main()
{
    std::ifstream FileIn;
    FileIn.open("INPUT.txt", std::ios_base::in);
    
    int numerator1, demonstrator1, numerator2, demonstrator2;
    
    FileIn >> numerator1;
    FileIn.seekg(1, SEEK_CUR); // bỏ qua dấu "/"
    FileIn >> demonstrator1 >> numerator2;
    FileIn.seekg(1, SEEK_CUR);
    FileIn >> demonstrator2;
    FileIn.close();
    
    int result_numerator, result_demonstrator;
    result_numerator = numerator1 * demonstrator2 + demonstrator1 * numerator2;
    result_demonstrator = demonstrator1 * demonstrator2;
    
    int _UCLN = UCLN(result_numerator, result_demonstrator);
    result_numerator /= _UCLN;
    result_demonstrator /= _UCLN;
    
    std::ofstream FileOut;
    FileOut.open("OUTPUT.txt", std::ios_base::out);
    FileOut << result_numerator<< "/" << result_demonstrator;
    FileOut.close();
    return 0;
}

Nhưng khi build & run Codeblocks báo lỗi như đã đề cập trên title topic, cụ thể là ở dòng FileIn.seekg(1, SEEK_CUR);.

Mọi người ai biết lỗi này giúp mình nhé, xin cảm ơn

P/S: Đoạn code trên chạy bình thường trên Microsoft Visual Studio 2015, nhưng không hiểu sao CodeBlocks báo lỗi như vậy !

chichi viết 02:33 ngày 01/10/2018

FileOut << result_demonstrator << “/” << result_demonstrator;

Dòng này viết nhầm này, test vs2008 cũng k lỗi

Người bí ẩn viết 02:35 ngày 01/10/2018

À, mình copy code mà quên fix
Nhưng hình như nó cũng không phải là vấn đề bạn !

Người bí ẩn viết 02:43 ngày 01/10/2018

Bạn nào rành lỗi này vào giúp mình với.
Mặc dù CodeBlocks bị lỗi thì qua VS nhưng mình vẫn muốn biết tại sao CodeBlocks bị lỗi này !

Nguyễn Xuân Phúc viết 02:41 ngày 01/10/2018

đem râu ông nọ cắm cằm bà kia hỏi sao :v
SEEK_CUR là của FILE stream mà? sau dùng cho fstream được?
http://www.cplusplus.com/reference/istream/istream/seekg/

Người bí ẩn viết 02:31 ngày 01/10/2018

SEEK_CUR là của FILE stream mà? sau dùng cho fstream được?

Vậy thay SEEK_CUR bằng số 1 được không anh ?

Nguyễn Xuân Phúc viết 02:36 ngày 01/10/2018

đọc cái link a gửi đi

Người bí ẩn viết 02:33 ngày 01/10/2018

À, thì ra là thế ios_base::beg

Nhưng sao trong Visual nó lại chạy bình thường vậy anh ?

Nguyễn Xuân Phúc viết 02:43 ngày 01/10/2018

tự cast bằng tay đi
còn VS build được là vì nó có hỗ trợ type convert cho thằng seekdir, dùng std::ios_base::seekdir để cast

Bài liên quan
0