2

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

1245
15
12
454564
122
....

我想逐行读取 read.txt 并将这些值保存到向量中,最后输出向量并将向量的值写入另一个名为 write.txt 的 txt 文件,该文件看起来与 read.txt 相同?我怎么能在 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);
4

3 回答 3

1

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

请参阅相关问题。

于 2013-03-02T08:49:29.013 回答
1

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

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

(注意双反斜杠:这是 C++ 编译器将它们视为常规斜杠)。

于 2013-03-02T08:50:11.560 回答
1

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

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

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

编辑:

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

input.push_back(atoi(textLine.c_str()));
于 2013-03-02T08:50:19.793 回答