Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
填写c++;数组,仅在每个索引的最后一项 首先,这是一个类,所以我们可以做什么和不能做什么有限制,再加上我对C++和编程都是非常新奇的,所以这就是代码可能有点废话的原因。_C++_Arrays_For Loop_Ifstream_Cout - Fatal编程技术网

填写c++;数组,仅在每个索引的最后一项 首先,这是一个类,所以我们可以做什么和不能做什么有限制,再加上我对C++和编程都是非常新奇的,所以这就是代码可能有点废话的原因。

填写c++;数组,仅在每个索引的最后一项 首先,这是一个类,所以我们可以做什么和不能做什么有限制,再加上我对C++和编程都是非常新奇的,所以这就是代码可能有点废话的原因。,c++,arrays,for-loop,ifstream,cout,C++,Arrays,For Loop,Ifstream,Cout,我绞尽脑汁想弄明白为什么当我使用第一个for循环中的第一组cout行显示项目列表时,它会显示每个单独的项目(它是skyrim成分及其效果的列表) 但是,当第二个for循环执行时,item_列表中只填充了应该插入的最后一个项(wisp包装及其效果) 即使只是给我指出正确的方向,我也会非常感激:) 干杯 int client::fill_list(int size_in, int h1size, int h2size) { char temp[ASIZE] = {'\0'}; int

我绞尽脑汁想弄明白为什么当我使用第一个for循环中的第一组cout行显示项目列表时,它会显示每个单独的项目(它是skyrim成分及其效果的列表)

但是,当第二个for循环执行时,item_列表中只填充了应该插入的最后一个项(wisp包装及其效果)

即使只是给我指出正确的方向,我也会非常感激:)

干杯

int client::fill_list(int size_in, int h1size, int h2size)
{
    char temp[ASIZE] = {'\0'};
    int j = 0;
    ifstream ifile;
    ifile.open("test.txt");

    if(ifile.is_open())
    {
        for(int i = 0; i < size_in; ++i)
        {    
            if(ifile.good())
            {       
                j = 0;
                do
                {                   
                    temp[j] = char(ifile.get());
                    ++j;
                }while(ifile.peek() != '*');
                temp[j] = char(ifile.get());
                copy(client_item.name, temp, j);
            }


            if(ifile.good())
            {
                j = 0;
                do
                {                   
                    temp[j] = char(ifile.get());
                    ++j;
                }while(ifile.peek() != '*');
                temp[j] = char(ifile.get());
                copy(client_item.effect1, temp, j);
            }

            if(ifile.good())
            {
                j = 0;
                do
                {                   
                    temp[j] = char(ifile.get());
                    ++j;
                }while(ifile.peek() != '*');
                temp[j] = char(ifile.get());
                copy(client_item.effect2, temp, j);
            }

            if(ifile.good())
            {
                j = 0;
                do
                {                   
                    temp[j] = char(ifile.get());
                    ++j;
                }while(ifile.peek() != '*');
                temp[j] = char(ifile.get());
                copy(client_item.effect3, temp, j);
            }

            if(ifile.good())
            {
                j = 0;
                do
                {                   
                    temp[j] = char(ifile.get());
                    ++j;
                }while(ifile.peek() != '*');
                temp[j] = char(ifile.get());
                copy(client_item.effect4, temp, j);
            }
            reference.into_list(i,client_item);
        cout << reference.item_list[i].name;
        cout << reference.item_list[i].effect1;
        cout << reference.item_list[i].effect2;
        cout << reference.item_list[i].effect3;
        cout << reference.item_list[i].effect4;
        getchar();
        }
    }
    for(int k = 0; k < SIZE; ++k)
    {
        cout << reference.item_list[k].name;
        cout << reference.item_list[k].effect1;
        cout << reference.item_list[k].effect2;
        cout << reference.item_list[k].effect3;
        cout << reference.item_list[k].effect4;
    }
    getchar();
    return 0;
}
。。。。 主食开始

#include "client.h"

int main()
{
    client program;

    program.fill_list(SIZE,HNSIZE,HESIZE);

    for(int i = 0; i < SIZE; ++i)
    {
        cout << program.reference.item_list[i].name;
        cout << program.reference.item_list[i].effect1 << endl;
        cout << program.reference.item_list[i].effect2 << endl;
        cout << program.reference.item_list[i].effect3 << endl;
        cout << program.reference.item_list[i].effect4 << endl;
    }
#包括“client.h”
int main()
{
客户端程序;
程序。填写清单(尺寸、HNSIZE、HESIZE);
对于(int i=0;icout部分问题可能是您如何在此处复制
客户项目

reference.into_list(i,client_item);
这只是将
客户项目
分配给
项目列表
,如下所示:

item_list[index] = item_in;
…但由于
的定义如下:

struct item
{
    item();
    ~item();
    char * name;
    char * effect1;
    ...
…所有
项目列表中的
项目
都将有指针(如
名称
等),指向与
客户端项目
中的内存相同的内存

例如,在每次赋值之后,name
中的指针
项列表[index].name
项列表[index].name中的指针将具有相同的值。(如果好奇,可以通过打印两个指针来检查。)因为它们都指向同一个内存,如果您更改存储在该内存中的内容,两个对象看起来会同时更改


这意味着对
客户端项目的后续更改(如将新字符串复制到它所指向的位置之一)也会影响所有保存的项目。

可能部分问题在于如何在此处复制
客户端项目的副本:

reference.into_list(i,client_item);
这只是将
客户项目
分配给
项目列表
,如下所示:

item_list[index] = item_in;
…但由于
的定义如下:

struct item
{
    item();
    ~item();
    char * name;
    char * effect1;
    ...
…所有
项目列表中的
项目
都将有指针(如
名称
等),指向与
客户端项目
中的内存相同的内存

例如,在每次赋值之后,name
中的指针
项列表[index].name
项列表[index].name中的指针将具有相同的值。(如果好奇,可以通过打印两个指针来检查。)因为它们都指向同一个内存,如果您更改存储在该内存中的内容,两个对象看起来会同时更改



这意味着对
客户端项目的后续更改(如将新字符串复制到它指向的某个位置)也会影响所有保存的项目。

您的编程类集成了Skyrim练习?我在哪里注册?是
参考。项目列表[k]
执行某种
返回();弹出()
使用向量或其他什么东西进行操作?参考项的类型是什么?
?查看更多涉及参考项的代码可能会很有用:
进入列表的方法,
项目列表的类型,等等。@chris在整个发条橙色的事情之前都很好。现在每次我都要制作一种药剂,我的眼睛是蓝色的eed@Drise,后增量可能出现在某些书籍中,但使用预增量是一个好习惯,因为它可以节省您制作有时很昂贵的副本。您的编程类集成了Skyrim练习?我在哪里注册?是
参考。item_list[k]
执行某种
返回();返回()
使用向量或其他什么东西进行操作?参考项的类型是什么?
?查看更多涉及参考项的代码可能会很有用:
进入列表的方法,
项目列表的类型,等等。@chris在整个发条橙色的事情之前都很好。现在每次我都要制作一种药剂,我的眼睛是蓝色的eed@Drise,在某些书籍中可能会出现后增量,但使用预增量是一个好习惯,因为它可以节省您制作有时很昂贵的副本。对我来说,这听起来是最明智的回答。呸!这很明显,我怎么会错过它?就是这样!谢谢大家的帮助,我真的很感激我收集了我需要创建的内容创建一个新函数或修改该函数以创建适当大小的新字符数组,然后逐个数组而不是作为struct@user1404053当前位置听起来很合理。这听起来是我最明智的回答。呸!这很明显,我怎么会错过呢?就是这样!谢谢大家的帮助,我真的很感激因此,我推测我需要创建一个新函数或修改该函数以创建适当大小的新字符数组,然后逐个数组而不是作为一个数组复制客户端数据数组struct@user1404053:听起来很合理。