cuốn sách gpt4 ai đã làm

c++ - vector 消失

In lại Tác giả: Walker 123 更新时间:2023-11-28 06:28:28 27 4
mua khóa gpt4 Nike

所以我的 Item::return_all() 有问题,因为我在 chính.cpp 中调用它。早些时候我在 read_file()for (auto data : example_item) 中尝试了 return_all 循环打印数据 inside item_ 正确.如果我在 main 中调用它,return_all() 不返回(或至少 main.cpp 不打印它)item_ 中的数据的原因是什么?或者 item_ 中的数据是否由于某种我不知道的原因而消失,因为我的 c++ 知识非常有限。

Items.txt 包含格式为 "1001:0:6" 的行。

chính.cpp
#include "item.hh"
#include "functions.hh"

int chính() {
Item item;
read_file("items.txt");
std::vector<>> example_item = item.return_all();
for (auto data : example_item){
for (auto data2 : data){
std::cout << data2 << std::endl;
}
}
}
项目.hh
class Item {

công cộng:
Item();
void add_item(std::vector item);
std::vector<>> return_all();
std::vector return_item(const int& name) const;

riêng tư:
std::vector<>> item_;
};
项目.cpp
#include "item.hh"
#include "functions.hh"

Item::Item(){}

void Item::add_item(std::vector item){
item_.push_back(item);
}

std::vector<>> Item::return_all(){
return item_;
}

std::vector Item::return_item(const int& name) const {
for (auto item : item_) {
if (item.at(0) == name) {
return item;
}
}
return {};
}
函数.hh
void read_file(const std::string name);
std::vector split(const std::string& string, char splitter);
函数.cpp
#include "item.hh"
#include "functions.hh"

void read_file(const std::string name){
Item item;
std::string line;
std::ifstream myfile(name);
if (myfile.is_open())
{
while (getline(myfile, line))
{
std::vector field{};
field = split(line, ':');
int name = std::stoi(field.at(0));
int type = std::stoi(field.at(1));
int attr = std::stoi(field.at(2));
std::vector field_i = {name , type, attr};
item.add_item(field_i);
}
}
myfile.close();
}

std::vector split(const std::string& string, char splitter) {
std::vector fields{};
std::string::size_type start_p{0};
while ( true ) {
std::string::size_type end_p{0};
end_p = string.find(splitter, start_p);
if ( end_p == std::string::npos ) {
phá vỡ;
}
std::string field{""};
field = string.substr(start_p, end_p - start_p);
fields.push_back(field);
start_p = end_p + 1;
}
fields.push_back(string.substr(start_p));
return fields;
}

câu trả lời hay nhất

改变这个:

Item item;
read_file("items.txt");

到:

Item item = read_file("items.txt");

和相应的read_file定义。按原样,该函数只是将文件读入本地 Item,然后将其销毁。所以你的 item 总是空的,因为没有任何东西向它添加任何东西。

关于c++ - vector 消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28110572/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress