Quantcast
Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
    1. Welcome to GTAForums!

    1. GTANet.com

    2. GTANet 20th Anniversary

    1. GTA Online

      1. The Cayo Perico Heist
      2. Find Lobbies & Players
      3. Guides & Strategies
      4. Vehicles
      5. Content Creator
      6. Help & Support
    2. Red Dead Online

      1. Frontier Pursuits
      2. Find Lobbies & Outlaws
      3. Help & Support
    3. Crews

    1. Red Dead Redemption 2

      1. PC
      2. Help & Support
    2. Red Dead Redemption

    1. Grand Theft Auto Series

      1. St. Andrews Cathedral
    2. GTA VI

    3. GTA V

      1. Guides & Strategies
      2. Help & Support
    4. GTA IV

      1. The Lost and Damned
      2. The Ballad of Gay Tony
      3. Guides & Strategies
      4. Help & Support
    5. GTA San Andreas

      1. Guides & Strategies
      2. Help & Support
    6. GTA Vice City

      1. Guides & Strategies
      2. Help & Support
    7. GTA III

      1. Guides & Strategies
      2. Help & Support
    8. Portable Games

      1. GTA Chinatown Wars
      2. GTA Vice City Stories
      3. GTA Liberty City Stories
    9. Top-Down Games

      1. GTA Advance
      2. GTA 2
      3. GTA
    1. GTA Mods

      1. GTA V
      2. GTA IV
      3. GTA III, VC & SA
      4. Tutorials
    2. Red Dead Mods

      1. Documentation
    3. Mod Showroom

      1. Scripts & Plugins
      2. Maps
      3. Total Conversions
      4. Vehicles
      5. Textures
      6. Characters
      7. Tools
      8. Other
      9. Workshop
    4. Featured Mods

      1. Design Your Own Mission
      2. OpenIV
      3. GTA: Underground
      4. GTA: Liberty City
      5. GTA: State of Liberty
    1. Rockstar Games

    2. Rockstar Collectors

    1. Off-Topic

      1. General Chat
      2. Gaming
      3. Technology
      4. Movies & TV
      5. Music
      6. Sports
      7. Vehicles
    2. Expression

      1. Graphics / Visual Arts
      2. GFX Requests & Tutorials
      3. Writers' Discussion
      4. Debates & Discussion
    1. Announcements

    2. Support

      1. Court House
    3. Suggestions

Whats wrong here


Grinch_

Recommended Posts

I was working on a function which isnt compiling here is the code(c++)

void file_exist(fstream& file,string name){        if(!file.open(name))    {       file.open(name, ios::out);       file_ccheck(file,name);    }else    {       file_ocheck(file,name);    }}

I am using cb with c++17 strandrad.i also tried using c.str() after the string(name) but still isnt working.

 

 

getting error at this line if(!file.open(name));

Edited by Inan-Ahammad
Link to post
Share on other sites

 

  • fstream::open does not return a bool. You cannot use it with if statement.
  • You can use fstream::good function instead.
  • fstream::open requires a const char* as the first argument, you cannot pass a string.
  • I dont understand what you are trying to do here.

    Opening a file again if it failed? That will most likely fail too.

  • The function name is misleading. Try to use better function names in the future,

    i expect file_exist to return a boolean , about wheather the file exists or not.

    file_ccheck and file_ocheck , its impossible to know what these functions mean.

    maybe they mean that execute it on create (hence file_c*) , or execute on open (hence file_o*)

    either way really confusing.

  • Also in the future, don't only specify which line has error , but maybe also what error it is

If you want to check if a file exists:

 

bool file_exists (const std::string& name) {    ifstream f(name.c_str());    return f.good();}

EDIT:

 

I guess you want to open a file if it doesn't already exist.

in that case

 

bool file_exists (const std::string& name) {    ifstream f(name.c_str());    return f.good();}void open_file(const std::string& name) {    if(file_exists(name)) {        //create file here    }    else {        //do something here.    }}

Explanation

 

1. fstream is for both read/write.

ofstream is only for write.

ifstream is only for reading.

 

The default second parameter for fstream::open, is ios_base::in | ios_base::out.

Therefore, it will open the file for both reading and writing.

So, it will create the file if it doesn't exist, and therefore not fail.

 

You can either use fstream with only ios_base::in as the flags,

or you can use ifstream.

Later, after you have checked if the file exists, you can reopen it with the ios_base::out

flag set, and create the file if it didnt , or continue if it did.

 

Therefore the code has both logical and syntax errors.

Edited by Parik
  • Like 1
Link to post
Share on other sites

 

  • fstream::open does not return a bool. You cannot use it with if statement.
  • You can use fstream::good function instead.
  • fstream::open requires a const char* as the first argument, you cannot pass a string.
  • I dont understand what you are trying to do here.

    Opening a file again if it failed? That will most likely fail too.

  • The function name is misleading. Try to use better function names in the future,

    i expect file_exist to return a boolean , about wheather the file exists or not.

    file_ccheck and file_ocheck , its impossible to know what these functions mean.

    maybe they mean that execute it on create (hence file_c*) , or execute on open (hence file_o*)

    either way really confusing.

  • Also in the future, don't only specify which line has error , but maybe also what error it is

If you want to check if a file exists:

 

bool file_exists (const std::string& name) {    ifstream f(name.c_str());    return f.good();}

EDIT:

 

I guess you want to open a file if it doesn't already exist.

in that case

 

bool file_exists (const std::string& name) {    ifstream f(name.c_str());    return f.good();}void open_file(const std::string& name) {    if(file_exists(name)) {        //create file here    }    else {        //do something here.    }}

Explanation

 

1. fstream is for both read/write.

ofstream is only for write.

ifstream is only for reading.

 

The default second parameter for fstream::open, is ios_base::in | ios_base::out.

Therefore, it will open the file for both reading and writing.

So, it will create the file if it doesn't exist, and therefore not fail.

 

You can either use fstream with only ios_base::in as the flags,

or you can use ifstream.

Later, after you have checked if the file exists, you can reopen it with the ios_base::out

flag set, and create the file if it didnt , or continue if it did.

 

Therefore the code has both logical and syntax errors.

 

thx bro after asking the question in 4-5 places,just got this answer.Will,test this when i get some time.Opss sry forgot to sent the screenshot of tyhe error here.Capture.PNG?width=359&height=24

Edited by Inan-Ahammad
Link to post
Share on other sites

If you fine with C++17, you can use std::filesystem.

#include <filesystem>

using fs = std::filesystem;

// ...
if (fs::exists("myfile.txt")) {
    // note: it may throw an exception
    // ...
}
Edited by DK22Pac
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • 1 User Currently Viewing
    0 members, 0 Anonymous, 1 Guest

×
×
  • Create New...

Important Information

By using GTAForums.com, you agree to our Terms of Use and Privacy Policy.