2015-03-02 64 views
0

我想在C++中制作一个简单的文本文件压缩器和解压缩器。 所以我的压缩程序接受参数从用户在cmd中以这样的方式C++访问多个文件只有一个路径已知

compress abc.txt 

现在它是什么,创建一个压缩文件,abc.cmp和隐藏的信息文件,info.cmp

解压缩时,假定这两个文件都在同一个目录中。

现在我的问题是:如果文件abc.cmp与我的decompress.exe不在同一个目录中,用户应该给出abc.cmp的路径,但是如何使用该路径访问info.cmp

例如用户将只能TPE:

decompress C:/abc.cmp 

我的程序需要访问信息文件很好,但用户不应该提供路径

void readInfoFile(string &line, int &n, int &k, unsigned char * &cstream, int &count) 
{ 
    ifstream fin("info.cmp"); 

    if (fin.is_open()) 
    { 
     for (int i = 0; !fin.eof(); i++) 
     { 
      if (i == 0) 
       fin >> n; 
      else if (i == 1) 
       fin >> k; 
      else 
      { 
       getline(fin, line, '\0'); 
      } 
     } 
     fin.close(); 
    } 
    for (int j = 1; line[j] != '\0'; j++) 
    { 
     line[j - 1] = line[j]; 
    } 
    count = ceil((float)(((float)(k))/8)); 
    cstream = new unsigned char[count](); 
} 


    void compressedFileStore(unsigned char * &readingArray, int count, char*argv[]) 
{ 
    ifstream fin(argv[1], ios::in|ios::binary); 
    fin.read((char*)readingArray, count); 
    readingArray[count] = '\0'; 
    fin.close(); 
} 

回答

0

文件名不能包含/,所以你知道最后的/之后的任何内容都是文件名,因此,最后的/之前的任何内容都是文件路径。

您可以使用正则表达式或其他方法来获取作为路径的子字符串,将“info.cmp”附加到最后,并将其用作完整路径。