【发布时间】:2021-06-01 20:47:30
【问题描述】:
我对 C++ 编程还很陌生,我一直不知道如何从特定行打印值。
我的意思是:
std::string musical_things [][][] = {
{
{"Scale"}, {"Minor Natural"}, {"1","2","b3","4","5","b6","b7"}
},
{
{"Scale"}, {"Major"}, {"1","2","3","4","5","6","7"}
},
};
所以,当我尝试访问一个完整的行时,我得到了内存地址。 如果我循环它,我会得到每个元素的内存地址。
for (int i = 0; i < 10; i++)
std::cout << "Output: " << musical_things [i]<< "\n" << std::endl;
我只是想得到musical_things [i]。
对于 i = 0,输出应为:{"Scale"}, {"Chromatic"}, {"1","2","3","4","5","6","7"}。
【问题讨论】:
-
没有自动打印数组行的方法。您需要通过迭代各个元素来自己完成
-
在您发布的代码中,您迭代最外层维度
musical_things[i]是一个二维数组。musical_things[i][j]是一维数组,其元素musical_things[i][j][k]是可以通过std::cout <<打印的字符串 -
但是,您不应该在这里使用 3d 数组。它使事情变得不必要地复杂化。而是编写一个包含数据的结构并使用
std::vector<my_struct> -
不幸的是,c++ 并不关心你想要什么。除了迭代单个字符串并打印它们之外,没有其他方法可以打印矩阵的行
-
"因为我将不得不重载 cout 运算符"不,这不是
std::vector的缺点。您不能随意打印矢量,就像您不能随意打印数组一样。您的直接问题与向量完全相同,只是解决方案要容易得多
标签: c++ arrays for-loop multidimensional-array std