返回一个多维数组
Posted
技术标签:
【中文标题】返回一个多维数组【英文标题】:returning a multidimensional array 【发布时间】:2014-03-06 18:11:14 【问题描述】: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;
此代码应。但我不知道怎么做。有任何想法吗?我认为应该使用指针,但是如何使用?
【问题讨论】:
您的问题之前已在此处得到解答:***.com/questions/720707/… 尝试将返回类型设为string*
而不是string
。另外,你返回的是什么?除了return 0
,我在您的代码中看不到任何回报
字符串* 不起作用
@spiritwolfform 为什么它不起作用?
0 不是多维数组...
【参考方案1】:
您需要返回指向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 并使用它的迭代器来查找结尾而不是硬编码它的大小。
【讨论】:
【参考方案2】:一种可能的解决方案:
struct MyStrings
string s[6][7];
;
MyStrings THIRDSTEP::DispSched(string movie)
MyStrings strings;
strings.s[2][3] = movie;
return strings;
【讨论】:
以上是关于返回一个多维数组的主要内容,如果未能解决你的问题,请参考以下文章