C++ cin.getline不适用于二维数组

C++ cin.getline不适用于二维数组,c++,C++,我试图从文本文件中读取一个句子,并将其存储在2D数组中。我正在使用函数cin.getline。我正在尝试将文本文件的每个句子存储到2D数组的一行中。read是我的ifstream对象。下面是我的代码示例 for (int i = 0; i < 7; i++) { int k=0; read.getline(people.wishlist[i][k], MAX); // store in row 0 when i is 0 } // what my text file lo

我试图从文本文件中读取一个句子,并将其存储在2D数组中。我正在使用函数cin.getline。我正在尝试将文本文件的每个句子存储到2D数组的一行中。read是我的ifstream对象。下面是我的代码示例

for (int i = 0; i < 7; i++)
{
    int k=0;
    read.getline(people.wishlist[i][k], MAX); // store in row 0 when i is 0
}

// what my text file looks like: 

// Hey how is your day
// whats up
for(int i=0;i<7;i++)
{
int k=0;
read.getline(people.wishlist[i][k],MAX);//当我为0时存储在第0行
}
//我的文本文件的外观:
//嘿,你今天过得怎么样
//怎么了
我收到的错误消息是:

错误C2664:'std::basic\u istream&std::basic\u istream::getline('u Elem*,std::streamsize'):

无法将参数1从“char”转换为“char*”


有人能给我建议一个解决这个问题的好方法吗?谢谢

问题在于,在2D字符数组
people.wishlist[i][k]
代表单个
char
i
th行和
k
th列),但是
getline
需要一个字符串
char*

您需要一个指向1D字符数组的指针,您可以只获取另一个维度的索引。(使用
i
)您可以这样尝试:

read.getline(people.wishlist[i], MAX);

正如错误所说,您正在传递一个
char
,它需要一个
char*
。具体来说,当您想要传递指向数组开头的指针时,您正在传递数组的第一个元素

正如@Nick所建议的,试试这个

read.getline(people.wishlist[i], MAX);

尝试删除第二个大括号[]
read.getline(people.wishlist[i],MAX)它只读取文本文件中句子的第一个字符它只读取句子的第一个字符,而不是整个句子
愿望列表的维度是什么?你怎么知道上面写的是什么?调试器,printf?如果打印
人物,我将其声明为char wishlist[100][100]。wishlist[i]
应该打印整个句子。如果打印
people.wishlist[i][k]
,它将只打印第一个字符,因为第二个维度就是字符。@Nick为什么用一维索引时,它会变成指针,而二维索引不再是指针它只读取句子的第一个字符,而不是整个句子