在c++中从外部文件扫描完整的一行

Scanning a complete line from a external file in C++

本文关键字:一行 c++ 从外部 文件 扫描      更新时间:2023-10-16

在c++中扫描文件中的一整行:

当我使用inFile >> s;时,其中s是一个字符串,inFile是一个外部文件,它只是从行中读取第一个单词。

完整代码:(我只是试图逐行扫描文件并打印行长度。)

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
ifstream inFile;
inFile.open("sample.txt");
long long i,t,n,j,l;
inFile >> t;
for(i=1;i<=t;i++)
{
    inFile >> n;
    string s[n];
    for(j=0;j<n;j++)
    {
        getline(inFile,s[j]);
        l=s[j].length();
        cout<<l<<"n";
    }
}
return 0;
}

Sample.txt

2
3
ADAM
BOB
JOHNSON
2
A AB C
DEF

第一个整数是测试用例,后面没有后面的单词。

使用std::getline函数;它就是为了这个目的而造的。你可以在这里读到。在您的特定情况下,代码将是:

string s;
getline(infile, s);
// s now has the first line in the file. 

要扫描整个文件,您可以将getline()放入while循环中,因为它在文件末尾返回false(或者如果读取了坏位)。因此,您可以这样做:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;    
int main() {
    ifstream inFile;
    inFile.open("sample.txt");
    int lineNum = 0;
    string s;
    while(getline(infile, s) {
        cout << "The length of line number " << lineNum << " is: " << s.length() << endl;
    }
    return 0;
}