读取字符串字符时出错 - 对于数组中的字符串值
Error reading characters of string - for a string value in an array
我正在尝试制作一个程序,该程序可以从文本文件中读取有关DVD信息的行。将信息提供给自定义DVD类后,我将打印它。目前,使用调试器时,它显示自定义类的每个参数的以下错误。 请帮忙。
读取字符串字符时出错
#include <iostream>
#include <string>
#include <fstream>
#include <vector>
#include <sstream>
using namespace std;
class dvd
{
string movieName, movieProdComp, movieLeadActor, movieLanguage, renterName;
string releaseYear, rentDate, returnDate;
public:
dvd() {};
dvd(string line) {};
dvd(string mn, string mpc, string mla, string ml, string rn, string ry, string rd, string retd);
void print();
};
dvd::dvd(string mn, string mpc, string mla, string ml, string rn, string ry, string rd, string retd) {
movieName = mn;
movieProdComp = mpc;
movieLeadActor = mla;
movieLanguage = ml;
renterName = rn;
releaseYear = ry;
rentDate = rd;
returnDate = retd;
}
void dvd::print() {
cout << "Movie:" << movieName << endl;
cout << "Production:" << movieProdComp << endl;
cout << "Starring:" << movieLeadActor << endl;
cout << "Language:" << movieLanguage << endl;
cout << "Rented By:" << renterName << endl;
cout << "Released:" << releaseYear << endl;
cout << "Rent Date:" << rentDate << endl;
cout << "Return Date:" << returnDate << endl;
}
int main() {
string filepath = "C:\Users\SuperUser\Google Drive\COMP306\TMA2\test.txt";
string line;
ifstream file(filepath);
string arrayDvd[10][8];
if (file.is_open())
{
int i = 0;
int c = 0;
int n = 0;
while (getline(file, line))
{
arrayDvd[n][c] = line;
i++;
c++;
if (i > 7)
{
n++;
c=i = 0;
}
}
}
for (int n = 0; n <= 9; n++)
{
//this is where the error shows.
dvd dvdS[] = { arrayDvd[n][0], arrayDvd[n][1], arrayDvd[n][2], arrayDvd[n][3], arrayDvd[n][4], arrayDvd[n][5], arrayDvd[n][6], arrayDvd[n][7] };
}
}
数据:以下字符串重复 10 次。完整数据
僵尸1
BBC
James
English
Alw
2012
20170601
20170630
更改
dvd dvdS[] = { arrayDvd[n][0], arrayDvd[n][1], arrayDvd[n][2], arrayDvd[n][3], arrayDvd[n][4], arrayDvd[n][5], arrayDvd[n][6], arrayDvd[n][7] };
自
dvd dvdS{ arrayDvd[n][0], arrayDvd[n][1], arrayDvd[n][2], arrayDvd[n][3], arrayDvd[n][4], arrayDvd[n][5], arrayDvd[n][6], arrayDvd[n][7] };
前者使用一个参数构造函数(不执行任何操作(创建一个包含 8 个实例的 c 样式数组,后者使用 8 参数构造函数创建一个实例。
我相信你想要这样的东西
std::vector<dvd> dvds;
for (int n = 0; n <= 9; n++)
{
dvds.push_back(dvd(arrayDvd[n][n*7+0], arrayDvd[n][n*7+1], arrayDvd[n][n*7+2], arrayDvd[n][n*7+3], arrayDvd[n][n*7+4], arrayDvd[n][n*7+5], arrayDvd[n][n*7+6], arrayDvd[n][n*7+7]));
}
这将创建一个数组(由 std::vector 包装(并推送其中的每个 DVD 对象。此外,您不需要变量i
将其删除,而不是检查i > 7
检查是否c > 7
相关文章:
- 将C#字符串数组传递给C++
- 如何为 C 型字符串数组编写 getter 和 setter?
- 有没有办法使用 strcpy 将字符串数组复制到另一个字符串或其他数组中?
- 尝试将 c 字符串数组与分隔符连接起来
- 将字符串数组传递给接受常量字符**的函数
- 返回 C++ 中的字符串数组
- 如何从COM模块中的函数返回字符串数组?
- 无法将字符串数组声明为类成员而不是字符 (C++)
- 删除字符串数组
- 如何将字符串数组返回到 java JNI
- 将字符串数组作为函数参数传递
- C++将字符串数组的元素存储到变量中
- 循环访问还包含未使用元素的字符串数组
- 字符串数组上的 sizeof 运算符以 C++ 为单位给出不同的输出
- 乘以字符串/数组和全局数组
- 递归二进制搜索与字符串数组
- 如何初始化一个标准::字符串数组?
- 无法在声明时使用初始值设定项列表初始化常量字符*/字符串数组的向量
- C++字符串数组的动态向量
- 给定一个等长字符串数组