0

对于这个程序,我必须逐行读取文件。如果该行有单词“GET”,我需要阅读从“GET”到字符“?”的所有内容。出现,然后将其保存到数组中。我需要继续这样做,直到文件结束。我不知道该怎么做,因为我从文件中读取数据非常草率。此外,我必须将所有内容都包含在一个功能中。到目前为止,这是我的代码;

void histogram(const int MaxPages, istream& input, ostream& output)
{
int size = 0;
CountedLocation *array;
//string line[100];
string temp = "";
char ch;
for(int i = 0; input.good(); i++)
{
    getline(input, line[i]);

}
4

2 回答 2

0
#include <algorithm>
#include <fstream>
#include <iostream>
#include <iterator>
#include <string>
#include <vector>

using namespace std;

vector<string> findGetStrings(istream& input) {
    string line;
    const string get("GET");
    vector<string> gets;
    while (getline(input, line)) {
        if (equal(begin(get), end(get), begin(line))) {
            const auto startPos = begin(line) + get.size();
            gets.emplace_back(startPos, find(startPos, end(line), '?'));
        }
    }
    return gets;
}

int main() {
    ifstream infile("data.txt");
    const auto gets = findGetStrings(infile);
    copy(begin(gets), end(gets), ostream_iterator<string>(cout, "\n"));
}
于 2013-10-23T16:13:54.663 回答
-1
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;
ifstream in("file.in");
vector<char>v[200];

int main()
{
    int i=0;
    char a;
    while(!in.eof())
    {
        in>>a;
        if(a=='G')
        {
            in>>a;
            if(!in.eof())
            {
                if(a=='E');
                {
                    if(!in.eof())
                    {
                        in>>a;
                        if(a=='T');
                        {
                            if(!in.eof())
                            {
                                i++;
                                while(!in.eof() && a!='?')
                                {
                                    in>>a;
                                    if(a!='?')
                                    {
                                       v[i].push_back(a);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    for(int j=1;j<=i;j++)
    {
        for(int l=0;l<v[j].size();l++)
        {
            cout<<v[j][l]<<" ";
        }
        cout<<endl;
    }
}
于 2013-10-23T15:47:43.550 回答