I'm currently beginning on C++ and trying to make a function that can open a .txt file, read it, and save its words in an array (each word being a protein sequence).
Unfortunately I don't succeed at calling the argument containing the name of the file (argv[1]) in the function.
Can anyone spot errors in my code or in the way I implemented this ?
Thanks in advance, you will find the code and the error messages below :
Libraries
So here are my librairies and 'shortcuts'.
// Librairies
#include <iostream>
#include <string>
#include <fstream>
// Alias
using std::cout;
using std::endl;
using std::string;
The function
Now this is the function, note that filename is supposed to be a string containing argv[1] (the name of a .txt file specified at execution) :
string SequenceChoice(int n, string filename); // Function returning a string
    std::ifstream sequenceFile (filename);   //Opens the file specified on execution
    if ( sequenceFile.is_open() )
    {
        cout<<"File opened"<<endl;
    
        string tmp;
        int i = 0;
    
        while( sequenceFile >> tmp )    // Counts the number of sequences (words)
        {
            i++; 
        }
    
        string allchains[i];   //  Creates an array of strings, to save all the words
    
        sequenceFile.clear();                   
        sequenceFile.seekg(0, sequenceFile.beg);  // Replaces the cursor at the beginning of the file
        i=0;
    
        while( sequenceFile >> allchains[i]) // Saves each word as a string in an array
        {
            cout << allchains[i] << tmp;    
            i++;
        }   
    
        sequenceFile.close();
        cout<< "File closed"<<endl;
    }
    else
    {
        cout << "Error: Cannot open file" << endl;
    }
    
    return allchains[n];            // returns the 'n'th word (n being specified when calling the function
// end of the function
Main
Now the main function, I'm not sure if doing string filename = argv[1] works, but I get less errors when I keep this step instead of putting  argv[1] as an argument of my SequenceChoice() function.
int main(int argc, char *argv[]) {
    if(argc >= 2) 
    {
        string filename = argv[1];
        cout << SequenceChoice( 2, filename ) << endl; // I expect it to give me the 3rd word of a .txt file for example.
    }
    else
    {
        cout << "Error : No file" << endl; 
    }
    return 0;
}
The error message I get
The link above is a picture of the error message I get when I compile, I've been searching for hours on the internet how to resolve this, unfortunately I could'nt manage to have the code working. There's probably an error of type with the way I deal with argv[], but I failed at solving it so any help and comments would be greatly appreciated.
 
     
     
     
    