gpt4 book ai didi

c++ - 输入和存储用户希望的任意长度的字符串

转载 作者:行者123 更新时间:2023-11-30 02:00:31 26 4
gpt4 key购买 nike

我想做什么:

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

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]

在“out”模式下关闭文件并在“in”模式下再次打开它。

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

集成开发环境:Visual C++ 2010 Express

最佳答案

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

如果字符串必须是单行,我们可以假设“合理”的长度(即它很容易放入内存),然后你可以使用 std::getline把字符串变成 std::string (用于输入),然后定义输出格式,说 "%Y-%m-%d %H:%M:%S: <i>user string</i>\n"为了文件。如果用户字符串可以是几行,你就会有定义一个协议(protocol)来输入它们(这样你就可以知道什么时候单个记录完成),以及更复杂的格式文件:一个建议是用一个空的分隔记录行(这意味着输入不能包含空行),或使用以下行的记录标题:"%Y-%m-%d
%H:%M:%S <i>line_count</i>\n"
. (颠覆使用这是一个变体 commit消息。多一点然而,信息只是时间戳和行数在那里。)

关于c++ - 输入和存储用户希望的任意长度的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15063612/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com