gpt4 book ai didi

c++ - C++ 中对象的循环问题

转载 作者:行者123 更新时间:2023-11-28 00:03:13 25 4
gpt4 key购买 nike

我必须创建一个简单的代码,它应该创建一个 .txt 文件作为输出,其中包含一个具有这种格式的符号列表。 (时间;主题;评论)代码必须使用如下所示的结构函数运行循环:

struct annotation_t {
string topic;
string comment;
time_t stamp;
};

因此用户可以根据需要多次输入符号,直到他决定外出为止。这就是我到目前为止所做的。

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


using namespace std;
struct annotation_t {
string topic;
string comment;
time_t stamp;
};

int main()
{

int q = 0;
std::vector<annotation_t> obj;

do
{

annotation_t temp = {};

cout<< "input your topic: ";
cin >> temp.topic ;
cout<< "input yourfeedback: ";
cin >> temp.comment ;
cout<< "input your time stamp: ";
cin >> temp.stamp ;
cout<< "exit?";
cin >> q;

obj.push_back(temp);


} while (q != 0);


ofstream myfile("annotation.txt");
char time[1000];

for(int i = 0;i<50;i++)
{
struct annotation_t obj[i];
myfile<<obj[i].stamp <<" "; // write in file
myfile<<obj[i].topic <<" ";// write in file
myfile<<obj[i].comment; // write in file
myfile<<"\n";

}
cout<<"\nFile Created with Data with name annotation.txt \n";

myfile.close();


system("Pause");

}

退出时遇到问题。如果我输入任何值(即使是 0),我会遇到段错误,所以我无法退出循环并将我的文件保存在 txt 中,或者如果我想输入更多则重新运行它。让我知道你的想法。谢谢

最佳答案

int i=0;
struct annotation_t obj[i];

你正在制作一个 annotation_t 对象数组,大小为 0

cin >> obj[i].topic ;

然后尝试访问第一个元素。

考虑使用 std::vector相反,这将允许您动态更改容器的大小,以允许用户输入任意数量的内容:

// Empty container
std::vector<annotation_t> obj;
do
{
// Create temporary
annotation_t temp = {};
// Accept input:
cin >> temp.topic;
...
// Add to container:
obj.push_back(temp);
}

在下面的 for 循环中,您正在做与上面相同的事情

for(int i = 0;i<50;i++) 
{
struct annotation_t obj[i];

此外,您正在创建一个新容器。您可能打算使用上面的容器,这会将您的循环更改为:

// Store the contents of the now populated obj from above
for (auto& a : obj)
{
myfile << a.stamp << " ";
myfile << a.topic << " ";
myfile << a.comment << std::endl;
}

关于c++ - C++ 中对象的循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37381650/

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