从文件流创建输出文件

时间:2013-01-08 16:51:18

标签: c++

我对c ++很新,是的,这是一个家庭作业。 我正在考虑使用switch语句而不是函数中的if else语句。

我试图在操作数据后将从输入文件流读取的信息写入输出文件。

prgram应该从文件中读取信息,处理它然后在控制台上显示数据并将结果写入输出文件,程序应该要求用户输入输入和输出文件的文件名

我无法让程序创建文件。它适用于已经存在的文件。

如果文件不存在,请帮助我创建一个文件。

哦,这是在c ++中

非常感谢任何帮助。

我的代码:

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <sstream>

using namespace std;

char getNumber(char l);

int main ()
{
     string s1 = "D:\\Unisa\\Assignment_stuffs\\COS1512\\Assignment\\";
     string inFile, outFile;

     cout << " Please enter the input filename: ";
     cin >> inFile;
     cout << "\nPlease enter the output filename: ";
     cin >> outFile;

     string inFileAdd = s1 + inFile;
     string inFileAdd2 = s1 + outFile;

     ifstream in_stream;
     ofstream out_stream;
     in_stream.open(inFileAdd.c_str(), ios::in);
     if (in_stream.fail())
     {
        cout << "Error!! Input file opening failed.";
        exit(1);
     }
     out_stream.open(inFileAdd2.c_str(), ios::out);
     if (out_stream.fail())
     {
        cout << "Error!! Output file opening failed.";
        exit(1);
     }   

     char next = ' ';
     string letter;

          while (!in_stream.eof()) 
          {
                in_stream.get(next);
                while (next != '\n')
                {
                        cout << next;
                        out_stream.put(next);
                        letter = letter + getNumber(next);
                        in_stream.get(next); 
                }
               cout << " " + letter;
               out_stream << " " + letter << endl;

               letter = "";
               cout << endl;
          }


     in_stream.close();

    return 0;
}

char getNumber(char l)
{
     if ((l == 'A') || (l == 'a') || (l == 'B') || (l == 'b') || (l == 'C') || (l == 'c'))
     {
            return '2';
     }
     else if ((l == 'D') || (l == 'd') || (l == 'E') || (l == 'e') || (l == 'F') || (l == 'f'))
     {
          return '3';
     }
     else if ((l == 'G') || (l == 'g') || (l == 'H') || (l == 'h') || (l == 'I') || (l == 'i'))
     {
          return '4';
     }
     else if ((l == 'J') || (l == 'j') || (l == 'K') || (l == 'k') || (l == 'L') || (l == 'l'))
     {
          return '5';
     }
     else if ((l == 'M') || (l == 'm') || (l == 'N') || (l == 'n') || (l == 'O') || (l == 'o'))
     {
          return '6';
     }
     else if ((l == 'P') || (l == 'p') || (l == 'Q') || (l == 'q') || (l == 'R') || (l == 'r') || (l == 'S') || (l == 's'))
     {
          return '7';
     }
     else if ((l == 'T') || (l == 't') || (l == 'U') || (l == 'u') || (l == 'V') || (l == 'v'))
     {
          return '8';
     }
     else if ((l == 'W') || (l == 'w') || (l == 'X') || (l == 'x') || (l == 'Y') || (l == 'y') || (l == 'Z') || (l == 'z'))
     {
          return '9';
     }
}

1 个答案:

答案 0 :(得分:1)

执行Beta所说的内容并首先创建最小文件打开和编写程序。让它工作。然后围绕它构建剩余的所需功能,在每一步中编译和修复错误。如果您可以使用它,请添加一些您想要的功能。如果这不起作用,请查看您正在写入的目录的权限。这可以在visual studio中编译,你可能需要在linux / unix / mac上包含其他库:

#include <fstream>
int main()
{
    std::ofstream file;

    file.open("file.txt");      //open a file

    file<<"Hello file\n";       //write to it

    file.close();           //close it
}