如何使用C++读取文本文件的单行
How to read individual lines of a text file using C++
好吧,我已经有一段时间没有读写文件了,我几乎忘记了我学到的一切。因此,我目前正试图弄清楚如何从文本文件中读取特定的行,并将该行输出到命令提示符中。这是我遇到问题的代码:
#include <iostream>
#include <fstream>
using namespace std;
int main(){
ifstream input;
int lineN=0;
string line[lineN];
input.open("input.txt");
getline(input, line[lineN]);
cout << line[lineN];
}
按照目前的情况,它将读取文本文件的第一行,没有问题。但是,如果我将变量lineN(代表行号)更改为1以读取第二行,则会导致提示崩溃。我不知道我做错了什么。我试过研究这个问题,但每个人的答案都太模糊了(或者我太笨了)。如果你能帮我,那就太好了。
问题是您在这里定义了一个空的字符串数组,并且数组不是动态的:
int lineN=0;
string line[lineN];
当您将lineN
更改为1时,数组中没有任何变化,您将脱离绑定!
更好的方法是使用矢量:
vector<string> line;
读取临时字符串:
string current_line;
getline(input, current_line);
并将其添加到您的矢量中:
line.push_back(current_line);
把所有这些放在一个漂亮的循环中会更有用:
string current_line;
while (getline(input, current_line)) {
line.push_back(current_line);
}
您可以稍后访问任何行,只需将line[i]
与您的数组一起使用,只要使用i< line.size()
即可。或者你可以很容易地遍历它的所有内容:
for (string x : line) { // means for every x in line[]
cout<< x<<endl;
}
您分配了一个大小为0的数组。。。
您可以在这里找到将要发生的事情的答案:C++new int[0]--它会分配内存吗?
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 读取文件并输入到矢量中
- 在C++中查找文件
- c++库的公共头文件中应该包含什么
- 从文件的单行读取输入字符
- 如何使用C++读取文本文件的单行
- 试图从c++文本文件的单行中提取字符串的一部分
- 删除单行文本文件QT
- c++中一个将文本文件读入std::string的单行代码
- 如何读取单行内具有多个分隔符的文件