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

时间:2016-08-28 04:45:39

标签: c++ external fstream ifstream ofstream

用于从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

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

1 个答案:

答案 0 :(得分:1)

使用std :: getline函数;它是为了这个目的而制作的。你可以阅读它here。在您的具体情况下,代码将是:

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;
}