如何在C++中读取文本文件
How to read from a text file in C++?
我正在尝试从文本文件中读取一组字符串,并将这些字符保存在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
我做错了什么?
您可以使用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。第二个迭代者(默认构造)表示文件的结束。
固定版本:
// Changed return type:
std::vector<std::string> fileReader(char* fileName){
ifstream treeFile;
treeFile.open(fileName);
string line;
std::vector<std::string> fileContents;
/// int rows=0, columns=0;
while (getline(treeFile, line )){
fileContents.push_back(line);
rows++;
}
// Cut off rest of code, instead:
return fileContents;
}
如果你想访问一个字符,你可以使用
std::vector<std::string> data = fileReader("file.txt");
char value = data[3][2];
如预期。
相关文章:
- 将从格式化文本文件读取的文本数据存储到链表
- 读取字符串文本输入以创建 2D 矢量
- 需要从存档中读取一行文本.txt直到找到"hhh",然后转到下一行
- 反转从控制台读取的文本
- 高效读取 3MB 文本文件,包括解析
- C++程序在 freopen 中读取大文本后停止工作
- C++忽略使用字符串流进行读取的文本文件中的空白
- 读取大量文本/文本文件的更快方法?
- 使用 std::ifstream 读取 ASCII 文本文件C++
- 如何读取从文本文件到几个数组的不同类型的数据?C
- 使用标准C++无线流读取UTF-8文本并转换为UTF-16
- 从二进制文件中抓取文本时,为什么 xdg_vtnr=8 是我的结果
- 视觉读取列文本数据并在C++中放入 3D 数组
- C++在同一函数中读取各种文本文件
- 从进程内存中读取的文本块中丢弃解析的行
- 读取长文本文件时程序崩溃 - "*.exe has stopped working"
- IO:从一个C++程序和另一个Java程序同时写入和读取同一个文本文件
- OpenCV,在显示图像时读取用户文本输入(使用 waitKey)
- 如何逐行枚举从文件中读取的文本,并找到 C 中字符和单词最多的行
- P/Invoke in ASP.NET (从 dll 读取/写入文本文件)