用于从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
第一个整数是测试用例,后面没有任何单词。
答案 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;
}