string THIRDSTEP::DispSched(string movie)
{
string data[6][7];
ifstream file("C:\\Users\\User\\Desktop\\MP 116\\sched1.csv");
for (int row = 0; row < 7; row++)
{
string line;
getline(file, line);
if (!file.good())
break;
stringstream iss(line);
for (int col = 0; col < 6; col++)
{
string val;
getline(iss, val, ',');
if (!iss.good())
break;
stringstream converter(val);
converter >> data[row][col];
}
}
return 0;
}
此代码应返回多维数组。但我不知道怎么做。有任何想法吗?我认为应该使用指针,但是如何使用?
答案 0 :(得分:0)
您需要返回data
的引用或指针(即return &data
)。
但是,只要函数返回,data
就会超出范围,因此仅此一项就没用了。您需要做的是将字符串数组传递给该函数并让它进行编辑,或者使用new
和delete
明确控制数据的生命周期。
我会说在函数外部创建数据并在这种情况下传递对它的引用最好。
更改最少的示例
void THIRDSTEP::DispSched(string movie, string (&output)[6][7])
{
ifstream file("C:\\Users\\User\\Desktop\\MP 116\\sched1.csv");
for (int row = 0; row < 6; row++)
{
string line;
getline(file, line);
if (!file.good())
break;
stringstream iss(line);
for (int col = 0; col < 7; col++)
{
string val;
getline(iss, val, ',');
if (!iss.good())
break;
stringstream converter(val);
converter >> output[row][col];
}
}
}
在旁注中,您希望避免在循环中使用像7和6这样的幻数。尝试创建std :: vector的std :: vector并使用它的迭代器来查找结尾而不是硬编码它的大小。
答案 1 :(得分:0)
一种可能的解决方案:
struct MyStrings
{
string s[6][7];
};
MyStrings THIRDSTEP::DispSched(string movie)
{
MyStrings strings;
strings.s[2][3] = movie;
return strings;
}