如何读写文件

时间:2013-03-02 08:44:43

标签: c++ stdvector readfile

我有一个名为read.txt E:\My_project\dictionary database\read.txt的文件,它看起来像

1245
15
12
454564
122
....

我想逐行读取read.txt,并希望将这些值保存到向量中,最后输出向量并将vector的值写入另一个名为write.txt的txt文件中,该文件与read相同。文本??我怎么能在C ++中做到这一点?

我试图从文件中读取这样的值:

  ifstream ifs("read.txt", ifstream::in);

但是我不知道在哪里保留read.txt文件。read.txt和write.txt的位置应该是什么???

编辑: 如果我使用向量来保存文本输入我得到一个错误:

int textLine;
  vector<int> input;

  ifstream ifs("C:\\Users\\Imon-Bayazid\\Desktop\\k\\read.txt", ifstream::in);

  if (ifs.good())   {

        while (!ifs.eof()) {
              getline(ifs, textLine);
              input.push_back(textLine);
        }

        ifs.close();

  } else
      cout << "ERROR: can't open file." << endl;


        for(int i=0;i<input.size();i++)
          cout<<input.at(i);

3 个答案:

答案 0 :(得分:1)

如果您的二进制文件位于E:\My_project,则需要调整要打开的文件的路径: ifstream ifs("./dictionary database/read.txt", ifstream::in);

请参阅this相关问题。

答案 1 :(得分:1)

由于文件名称已硬编码为"read.txt",因此该文件必须与可执行文件位于同一文件夹中。如果文件的位置不会改变,您可以硬编码完整路径:

ifstream ifs("E:\\My_project\\dictionary database\\read.txt", ifstream::in);

(注意加倍的反斜杠:C ++编译器将它们视为常规斜杠)。

答案 2 :(得分:1)

您可以在打开文件时给出文件的绝对路径:

ifstream ifs("E:\\My_project\\dictionary database\\read.txt", ifstream::in);

或者您可以移动可执行程序,该程序在文件所在的同一目录中读取文件。

编辑:

通过像这样声明你的向量:vector<int> input;你创建了一个向量,你可以在其中存储整数值,但你从文件(textLine)读取的是一个字符串。如果您只想将文件中的数字解释为整数值,则必须使用

input.push_back(atoi(textLine.c_str()));