我想做什么:

将记录存储在文件中。这些记录有两件事。

time_t rt; //which stores the time the record was entered by the user

与此同时,我想存储一个字符串。但是我不知道字符串的长度。

这将取决于运行时间,并取决于用户输入的字符数。

需要做什么(根据我):

我没有线索。我了解动态内存分配,但不知道如何将其应用于此类问题。

我尝试了什么:

我试图一次从用户那里获取一个字符并将其存储在文本文件中(临时)。
ofstream fileObject;

fileObject.open("temp.txt");

for(int j=0;;j++)
{
  ch = _getche();

if( ch == 13)  break; //user has pressed the return key

  fileObject<<ch;
}

然后我使用以下代码找出文件的大小:
fileObject.seekp(0,ios::end);

long pos = fileObject.tellg(); //this is the size of the file

然后,我声明了文件大小的动态数组。
char * entry;

entry = new char[pos]

在“输出”模式下关闭文件,然后在“输入”模式下再次打开文件。
fileObject.close();

ifstream fout;

fout.open("temp.txt"); //this is the name of the text file that i had given

然后按字符将文本文件的内容复制到字符数组中:
for(int i=0;i<pos;i++)

  fout>>info[i];

info[i] = '\0';

fout.close();

但是现在我不知道该怎么做。

我需要您帮助什么:

帮助我将此记录作为类对象写入二进制“.dat”文件中。

我的规格:

Windows XP SP 3

IDE:Visual C++ 2010 Express

最佳答案

对字符串有什么限制?那你呢
认识到用户已经输入了他想要的所有数据
字符串?

如果字符串必须是一行,我们可以假设
“合理的”长度(即很容易放入内存),然后
您可以使用std::getline将字符串放入std::string(用于输入),然后定义输出格式,
"%Y-%m-%d %H:%M:%S: user string\n"
文件。如果用户字符串可以是几行,那么您将拥有
定义输入它们的协议(protocol)(这样您就可以知道何时
一条记录就完成了),而对于
文件:一个建议是将记录分隔为空
行(这意味着输入不能包含空行),
或使用以下行的记录头:"%Y-%m-%d%H:%M:%S line_count\n"。 (Subversion使用
这是它的commit消息的变体。还有一点
信息,但是,时间戳和行数
在那儿。)

关于c++ - 输入并存储一个字符串,该字符串的长度可以根据用户的意愿,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15063612/

10-11 22:55
查看更多