创建char类型的大型数组并复制文件字符

时间:2013-04-03 13:11:30

标签: c++ arrays string file fstream

我必须在大尺寸数组中复制文件的字符,所以我创建了这段代码:

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)'

(和其他错误行)

如何在大字符数组中复制文件的所有字符?

3 个答案:

答案 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]);