我正在尝试从文本文件中读取一堆字符串并将字符保存在2D数组中。以下是我的代码:
char** fileReader(char* fileName){
ifstream treeFile;
treeFile.open(fileName);
string line;
vector<string> fileContents;
int rows=0, columns=0;
while (getline(treeFile, line )){
fileContents.push_back(line);
rows++;
}
columns = fileContents.at(0).length();
char** fileContentsArr;
fileContentsArr = new char*[rows];
for (int x=0; x < rows; x++){
fileContentsArr[x] = new char[columns];
for (int y=0; y < columns; y++){
fileContentsArr[x][y]= fileContents.at(x)[y];
}
}
treeFile.close();
return fileContentsArr;
}
输出应为:
TTTTTTTT
TTTTTTTT
TTTTFFFT
TTTTTTFF
FFFFTTFF
FFFFTTFF
FFFFTTTT
FFFFTTTF
但我只得到每行的前7个字符,只得到前7个字符串。
实际输出:
TTTTTTT
TTTTTTT
TTTTFFF
TTTTTTF
FFFFTTF
FFFFTTF
FFFFTTT
我做错了什么?
答案 0 :(得分:3)
您可以使用STL几乎完成您需要的所有操作:
vector<string> fileReader(char* fileName){
ifstream treeFile(fileName);
vector<string> fileContents(
(std::istream_iterator<string>(treeFile)),
std::istream_iterator<string>());
return fileContents;
}
这将使用其双迭代器构造函数创建向量,第一个迭代器从treeFile
读取并生成string
s。第二个迭代器(默认构造)表示文件的结尾。
答案 1 :(得分:1)
修正版:
std::vector<std::string> data = fileReader("file.txt");
char value = data[3][2];
如果您想访问某个角色,可以使用
{{1}}
按预期。