그래서 두 번째로 연결된 목록에 성과 이름을 추가하려고 시도하고 있습니다. "string, string"형식의 다양한 길이의 다양한 텍스트 파일을 보유하고 있으며 목록을 사용하여 데이터를 저장합니다.목록 및 쌍에 대한 혼동
이 코드를 사용하고 있습니다 :
typedef std::list< std::pair<string,string> > listPair;
...
list<pair<string, string> > mylist;
ifstream myFile;
myFile.open("20.txt");
pair<string, string> stuff;
while (myFile >> stuff.first >> stuff.second)
{
mylist.push_back(stuff);
}
listPair::iterator iter = mylist.begin();
for(;iter != mylist.end();iter++)
{
string s = (*iter).first;
cout << s << endl;
string c = (*iter).second;
cout << c << endl;
}
지금 제가하는 데 문제는 첫째, 목록의 마지막 항목이 추가되지 않는 것입니다. 모든 파일이 마치 최종 줄을 놓친 것처럼 약간 혼란 스럽습니다.
또한 모든 이름이 추가되었는지 확인하기 위해 mylist.size()를 사용하고 있으며 99 개의 이름 (예 : 99 줄의 텍스트)이 포함 된 텍스트 파일에 대해 말하기 때문에 혼란 스럽습니다. (마지막 줄이 없어서 98로 읽는 것을 잊지 않고) 목록의 크기는 48입니다.
왜 48입니까? 쌍을 이루었 기 때문에 쌍을 이루었 기 때문에해야 할 일이 있습니다. 쌍으로 읽지 않는 것처럼 이해할 수는 없지만 사실상 쌍은 약 두 가지가 될 것입니다. 그 쌍은 이름과 성을 하나의 값으로 취하기 때문입니다.
나에게 소리가 난다.
다시 한번 감사드립니다.
아마도 'getline'을 찾고 있을까요? –
보조 노트와 마찬가지로, 범용 컨테이너로'list'보다는'vector'를 사용해야합니다. 당신이 그것을 사용하는 방식에서, 나는 여기에'목록'의 필요성을 보지 못했다. –
입력 파일'20.txt' (또는 적어도 추출 파일)을 추가 할 수 있습니까? 입력 내용의 형식이 잘못되었을 수 있습니다. – Zeta