返回多维数组
returning a multidimensional array
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;
}
此代码应返回一个多维数组。 但我不知道怎么做。 有什么想法吗?我认为应该使用指针,但是如何呢?
你需要返回一个引用或指向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,并使用它的迭代器来查找结尾,而不是硬编码其大小。
一种可能的解决方案:
struct MyStrings
{
string s[6][7];
};
MyStrings THIRDSTEP::DispSched(string movie)
{
MyStrings strings;
strings.s[2][3] = movie;
return strings;
}
相关文章:
- 为什么 C++ 中的字符数组返回其项目而不是地址?
- C++ bool 数组返回 1 或 0 以外的值
- C++ ostream 从对象数组返回数据
- 类中的重载运算符 [],因此它可以从模板类中的数组返回对象
- 指向对象的指针数组返回jibberish
- 具有基本结构的结构数组返回错误的答案
- 数组返回乐趣 movie_check()
- C++从字符数组返回类型为T的指针
- C++-将数组返回到主函数,并将数组传递给另一个函数
- C++:如何通过异常处理从越界数组返回值
- 整数数组返回类型
- 从字符串流复制到 char * 数组返回为函数参数
- C++函数从对象数组返回对象的副本.这是默认行为吗?
- 8字节数组返回长(C#到C++)
- 向c#数组返回一个字符数组c++
- 从并行数组返回值,并在以后的函数中使用这些值
- 将c++中的浮点数数组返回给Python
- 如何在gsoap中使字符串数组返回值
- 将两个字符相乘并向数组返回int
- C++套接字 - 从结构数组返回单个地址信息