나는 C ++로 텍스트 파일을 읽고 그것에서 다른 파일로 쌍을 이루는 숫자를 쓰고 있습니다.
입력 파일의 구조는 쌍을 이루는 숫자의 묶음과 "remove120 43 blah bla"와 같이 이전 쌍의 숫자 중 하나를 제거하는 것을 나타내는 일부 행입니다.이 경우 120 43 (이전 행 중 하나에 확실히 존재 함).
따라서 한 줄에 "remove"라는 단어가있을 때마다 이전 줄에서 쌍을 이루는 번호를 찾아 출력에서 삭제하고 싶습니다.
추신 : 나는 과거 에이 입력 파일을 제공했지만 지금은 문자열 작업이 좋지 않아 혼란 스럽습니다.
나는 이렇게 시작했다 :
string s;
ifstream myfile("input.txt");
ofstream output ("output.txt");
if(myfile.is_open()){
while (!myfile.eof()){
getline (myfile, s);
.
.
.
일부 코드는 현재 위치를 확인하는 데 도움이 될 수 있지만 설명하신 내용에서 다음과 같이 설정했습니다.
istream file;
string line;
map pairs;
sstream line_parser;
int one, two
while (file >> line) {
line_parser.str(line);
if (line[0] == 'r') {
line_parser >> line; // take 'remove' out of the stream
line_parser >> one;
pairs.erase(pairs.find(one));
} else {
line_parser >> one;
line_parser >> two;
pairs[one] = two;
}
}
편집 : 중복 키가 없다고 가정합니다. 그렇지 않으면 값을 덮어 씁니다. 쌍을 보관하기 위해지도를 어떤 컨테이너로도 대체 할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다