获取矢量的内容并将它们放在文本文件中

时间:2013-12-02 07:52:01

标签: c++ vector

我正在为我的计算机科学课做作业,这是第一年的课程,因为我是初学者,而且我在某个部分遇到了麻烦。

我的作业的快速解释是: 它从文本文件中获取信息,并在程序运行时将其放入向量中,您可以为其添加名称或从中删除名称,一旦完成,您需要它来保存信息,这意味着您必须将信息从矢量中取出并将其替换为文本文件。

我还没有学会从信息中取出信息然后回到文本文件中的方法,我看到我的一个同学在这里发了几次,但他几乎被解雇了所以他告诉我为自己问问题。

我们给了我们程序的一些编码,老实说,我不知道如何使函数将信息从向量中取回并更新到文本文件中。

包括什么:

#include <iostream>
#include <string>
#include <vector>
#include <fstream>

这里是保存的功能,非常感谢任何帮助。

void quit_program(string strFileName, vector<string>&vecThisStudent)
{
//write the body of the function
//Hint: this is the function you should write the vector’s content back to the file.

cout<<"Thanks for using the program. Program terminated"<<endl;
}

正如你所看到的那样,我们甚至给出了关于该功能应该做什么的提示,但是我从课堂上谈过的任何人都没有找到如何完成它的线索(或者他们不喜欢我这么说我)

如果需要整个程序,我可以发布它。它看起来几乎与我之前发布的同学相同,但那只是因为我们获得了大部分代码而且我们只需要完成一些不同的事情,而且我刚刚被困在这里过去10个小时左右

我的read_file

int read_file(string strFileName, vector<string>&vecThisStudent, fstream &inFile)
{

string strFirstName
    string strLastName;

inFile.open(strFileName.c_str(), ios::in | ios::out | ios::app);

while (inFile >> strFirstName >> strLastName)
{
    vecThisStudent.push_back(strFirstName + " " + strLastName);
}

return 0;
}

3 个答案:

答案 0 :(得分:2)

将问题拆分为子问题。保持分裂成小块直到每件都可以管理。

在您的情况下,我很乐意使用“C ++在程序退出时执行操作”,“C ++容器序列化”,“C ++文件IO”。

第一个会给你C: Doing something when the program exits,第二个会给你ostream iterator usage in c++,最后会给你第三个 - Writing in file C++

作为最后一步,您只需要将所有三个组合在一起。

史蒂夫,不要责怪你的教授或你的命运。作为一名优秀的程序员,就像成为一名优秀的外科医生一样艰难,既努力又有回报,但需要相当多的奉献精神才能从平庸到成熟的瑞士军刀。在第一次面试时,你会看到问题比这些作业中提出的要多得多。

答案 1 :(得分:1)

看到你缺乏C ++知识,我真的建议你看一些关于C ++的教程。如果你不知道for循环是什么/如何使用它,你将来会有未来作业的主要问题。

Here are some great series of tutorial.

没有这样的东西正在获取文件(或矢量)的内容并将其自动放入矢量(或文件)中。

但要阅读或写入数据,请查看this page

阅读文件的一般想法是:

  1. 迭代文件并逐个读取每个输入。
  2. 将输入放入向量
  3. 将数据输出到文件的一般想法是:

    1. 迭代数据(例如:该向量的每个元素)
    2. 输出该数据(例如:该元素)。
    3. 通过迭代,我的意思是运行数据(通常通过for循环):

      int write_file(string strFileName, vector<string>&vecThisStudent, fstream &outFile)
      {
          outFile.open(strFileName.c_str(), ios::in | ios::out | ios::app);
      
          for (int i = 0 ; i < vecThisStudent.size() ; i++) {
              //Use this line to output to console
              cout << vecThisStudent[i] << " \n";
      
              //Use this line to output to file
              outFile << vecThisStudent[i] << "\n";
          }
      }
      

答案 2 :(得分:0)

使用ofstream http://www.cplusplus.com/reference/fstream/ofstream/

打开文件..

使用&lt;&lt;&lt;&lt;&lt;&lt; (http://www.cplusplus.com/reference/ostream/ostream/operator%3C%3C/

关闭文件..

我不确定你究竟是怎么回事..