我必须在大尺寸数组中复制文件的字符,所以我创建了这段代码:
std::vector<std::vector<char> > strings;
strings.resize(rows);
for (int i = 0; i < rows; i++)
{
strings[i].resize(columns);
}
ifstream in("filename.txt");
for (int i = 0; i < rows; i++)
in.getline(strings[i], columns);
strings
应该包含文件的所有字符,但是当我编译这个程序时,我有以下错误:
没有匹配函数来调用'std :: basic_ifstream&gt; :: getline(std :: vector&gt;&amp;,int)'
(和其他错误行)
如何在大字符数组中复制文件的所有字符?
答案 0 :(得分:0)
in.getline()
无法将char
的向量作为其第一个参数。您应该使用std::string
。
你可以getline(in, strings[i]);
。
要填写二维矢量的值,您可以执行以下操作:
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
in >> strings[i][j];
}
}
答案 1 :(得分:0)
您应该使用std::string
std::vector<char>
instread
如果由于某种原因您确实需要使用数据结构std::vector<std::vector<char> >
然后使用std::string
读取文件,然后将其转换为std::vector<char>
,但我不明白为什么要这样做
答案 2 :(得分:0)
正如OGH建议的那样,我会使用std::vector<std::string> strings;
代替vector<vector<char>> strings;
并使用字符串标题getline:
getline(in, strings[i]);