打开文件,保存不同名称的副本

时间:2016-08-06 15:59:29

标签: c++ file-io

Hello c ++ newbie over !!! !!!

我正在开发一个非常简单的程序,它打开保存在矢量中的文件,反转每个文件的内容文本,并保存新文件。 我正在使用代码块

例如:

  • 打开" test.txt"
  • 反向线
  • 创建" m_test.txt"
  • 删除" test.txt"
  • 对向量中的其他文件执行相同的操作。

我收到错误: outFile.open( foundFiles[i].insert(3,"m_"), fstream::in);

" no matching function for call to 'std::basic_fstream::open(std::basic_string&, std::_Ios_Openmode)'| "

here is the code so far:

 string reverseLine(string message);

 string reverseLine(string message)
 {
    string reversed;
    int i = message.length()  -1;
    while (i>=0)
        {
        reversed = reversed + message[i];
        i = i -1;
        }
    return reversed;
 }


 void filesToModify();

 void filesToModify() // put files into vector
 {

 fstream filesInVector;  // files open from the vector
 string  openFLine;      // lines read from the files read from the vector

 fstream outFile;        //files saved after reversing the files

 vector <string> foundFiles;   //vector holding all the files to be reversed


 foundFiles.push_back("e:/file_1.txt");
 foundFiles.push_back("e:/file_2.txt");
 foundFiles.push_back("e:/file_3.txt");

 for (int i=0; i<foundFiles.size(); i++) // read the files inside the vector
        {
            filesInVector.open(foundFiles[i],  fstream::in);

            while (!filesInVector.eof())
            {
            getline(filesInVector,openFLine);
            outFile<<reverseLine(openFLine);
            outFile.open( foundFiles[i].insert(3,"m_"),  fstream::in); // add "m_" to the created file
            foundFiles[i].close();    // close the  file

            std::remove(foundFiles[i]); // remove the original file
           }
        }

  int main()
 {

 filesToModify();

 }

1 个答案:

答案 0 :(得分:0)

outFile.open( foundFiles[i].insert(3,"m_").c_str (),  fstream::in);

C ++以前没有字符串数据类型。它稍后在STL(标准模板库)中添加。这些早期的C ++版本使用了char *(指向字符的指针)。字符串只是由字符数组表示,以0 char(char为代码0)结束。持有这个数组的第一个字符的地址。

有些函数仍然期望使用char *而不是字符串。 方法c_str()的STL类字符串将STL字符串转换为char *。