이제 2 번 줄을 보면, Cow-DNA Sequence; 이것은 13 행과 24 행에서 계속됩니다. 그리고 ... 사이에 공백과 새 줄을 무시한 각 시퀀스에 대해이 긴 시퀀스를 가져 오려고합니다. 1줄 바꿈없이 공백없이 나머지 시퀀스를 읽는 방법은 무엇입니까? C++
이는
ifstream file ("txt");
string line;
vector <string> vec;
stringstream s;
string name;
string strip(string & s)
{
size_t b = s.find_first_not_of(' ');
size_t e = s.find_last_not_of(' ');
if (b == string::npos) {
return "";
} else {
return s.substr(b, e - b + 1);
}
}
void getSequence(){
int i;
int row;
int col;
if (file.is_open())
{
file >> row >> col;
for (i = 0; i < row; i++) {
vec.push_back("");
}
i = 0;
while (getline(file, line))
{
file >> name;
if (line == " ")
{
continue;
}
vec[i % row] += strip(line);
i++;
}
}
else {
cerr << "Error: file did not open!" << endl;
}
for (const string & v : vec) {
cout << v << endl;
}
}
당신의 도움에 미리 감사드립니다 처음 10 개 시퀀스를 읽는 코드입니다 :
이
는 파일의 형식입니다.
루프 대신 'vector.resize (row)'를 사용할 수 있으며,'getline'은 전체 행을 읽습니다. 'file >> name;을 사용하여 그 뒤에 오는 것은 당신이 필요로하는 것이 아닙니다. 2-11 줄이 13+에 해당하는지 또는 해당 데이터로 무엇을하려하는지 명확하지 않습니다. –
그리고 그것은 얼마나 많은 라인을 계속 사용합니까? 알아야 할 형식 정보가 충분하지 않습니다. –
링크를 참조하십시오. 형식에 대한 더 나은 아이디어를 제공해야합니다. 그것이 내가 사용하고있는 파일이다. 'file >> name; '각 시퀀스의 이름을 저장합니다. – Shukri