如何使用C++读取文本文件的单行

How to read individual lines of a text file using C++

本文关键字:文件 单行 取文本 读取 何使用 C++      更新时间:2023-10-16

好吧,我已经有一段时间没有读写文件了,我几乎忘记了我学到的一切。因此,我目前正试图弄清楚如何从文本文件中读取特定的行,并将该行输出到命令提示符中。这是我遇到问题的代码:

#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]--它会分配内存吗?