为什么我的程序无法识别结构中的变量?
Why won't my program recognize variables from my structure?
我正在尝试创建一个基于范围的循环,以填充我的一个类中实验室的结构向量。问题是当我写
之类的东西时"movieInfo.Title.push_back(tempTitle);"
它不识别"标题"是结构"电影"中的字符串。
我已经尝试使用" emplace_back",并试图直接填充向量。实验室提示是修改相同主题的矢量实验室,但使用结构向量。
我的结构如下
struct movie
{
std::string Title, Director, Genre, Year, runningTime;
};
,它在main中定义为
vector<movie> movieInfo{};
最后,我的" for"循环写为
for (int i = 0; i < 20; i++)
{
string tempTitle, tempDirector, tempGenre, tempYear, tempTime;
getline(inFile, tempTitle, ',');
movieInfo.Title.push_back(tempTitle);
getline(inFile, tempDirector, ',');
movieInfo.Director.push_back(tempDirector);
getline(inFile, tempGenre, ',');
movieInfo.Genre.push_back(tempGenre);
getline(inFile, tempYear, ',');
movieInfo.Year.push_back(tempYear);
getline(inFile, tempTime);
movieInfo.runningTime.push_back(tempTime);
}
我的错误是
"error C2039: 'Title': is not a member of 'std::vector<movie,std::allocator<_Ty>>'
1> with
1> [
1> _Ty=movie
1> ]"
这将重复所有push_back行。
这不是结构向量在C 中的工作方式。如果向量类型是一个结构,则C 不会为您的结构中的每个字段创建向量。正确的方法是:
for (int i = 0; i < 20; i++)
{
string tempTitle, tempDirector, tempGenre, tempYear, tempTime;
movie tempMovie = {};
getline(inFile, tempTitle, ',');
getline(inFile, tempDirector, ',');
getline(inFile, tempGenre, ',');
getline(inFile, tempYear, ',');
getline(inFile, tempTime);
tempMovie.Title = tempTitle;
tempMovie.Director = tempDirector;
// And so on...
movieInfo.push_back(tempMovie); // Push the whole struct into the struct's vector
}
当然还有其他方法可以考虑您应该考虑的插入部分,例如Emplace_back ..
相关文章:
- 从结构寻址时,MMAP变量的行为很奇怪
- 访问在 C++ 结构中声明的枚举变量
- 我可以在 C++ 中将数据成员/变量从其定义之外添加到结构中吗?
- 如何为 c++ 的不同变量类型的结构元素创建动态数组?
- 为什么未命名的结构内联变量在每个翻译单元中没有相同的地址?
- 在类构造函数中使用结构变量
- 在 c++ 中将变量作为结构构造函数中的引用传递
- 在类构造函数中定义结构变量的参数
- 为什么我们再次从结构对象创建结构变量?
- 从另一个 cpp 文件更改结构内、映射键内的变量
- 模板化结构中的零大小成员变量
- C++ 结构中的可选变量(变量结构)
- 对其中一个变量的多变量结构进行排序
- 指向非指针变量结构的指针。这些变量在哪里,堆还是堆栈?
- 是好是坏:为了避免使用全局变量/结构体的属性/大量参数而使用巨型结构体
- Cpp变量/结构用于存储128位数据
- 第一私有变量结构中允许的OpenMP调用和指令
- VS2008传递变量-结构与结构组件-优点/缺点
- 在c++类成员函数中使用c库变量/结构成员
- 如何不迷失在执行'<'对于多变量结构