getline 질문드립니다.
545
작성자 없음
작성한 질문수 0
안녕하세요오
split 관련 문제를 풀어보고 싶어서 찾아보던 중, 백준 9093번 문제를 발견하게 되어 풀어보았습니다!
공백을 포함해서 받아야 해서 getline을 통해 여러번 입력을 받으려니 cin.ignore()를 해야만 가능한 것 같아서 사용해보았는데요, 질문은 다음과 같습니다!
▼ 입력
3
I am happy today
We want to win the first prize
hello world!▼ 출력 시 코드 결과
I ma yppah yadot
e tnaw ot niw eht tsrif ezirp
olle !dlrow원하는 결과는
eW tnaw ot niw eht tsrif ezirp
olleh !dlrow 인데,
코드를 돌려보니 문자열이 뒤집혀서 출력되는 것은 원했던 바가 맞는데, 보시다시피 2번째 문자열부터 맨 앞글자가 하나씩 빠지는 문제가 있었습니다.
코드를 어떻게 수정해야 원하는 결과가 나올지 궁금합니다!
전체 코드
#include <bits/stdc++.h>
using namespace std;
vector<string> split(string s, string delimiter){
string token = "";
int pos;
vector<string> str;
while( (pos = s.find(delimiter)) != string::npos ){
token = s.substr(0, pos);
reverse(token.begin(), token.end());
token += " ";
str.push_back(token);
s.erase(0, pos + 1);
}
reverse(s.begin(), s.end());
str.push_back(s);
return str;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
while(n){
string s;
cin.ignore();
getline(cin, s);
vector<string> s2 = split(s," ");
for(auto i : s2){
cout << i;
}
cout << "\n";
n--;
}
return 0;
}
답변 1
1
안녕하세요 이유님 ㅎㅎ
해당 부분은 버퍼플래쉬를 하면 됩니다. 해당 부분 교안에 추가하겠습니다.
다음코드처럼 구성하면 되구요.
#include <bits/stdc++.h>
using namespace std;
int T;
string s;
int main(){
cin >> T;
string bufferflush;
getline(cin, bufferflush);
for(int i = 0; i < T; i++){
getline(cin, s);
cout << s << "\n";
}
return 0;
}
http://boj.kr/cb10b9f264a54e6c9a65456a7a53dd60
해당 문제에 대한 풀이는 앞의 코드를 참고해주시면 됩니다.
감사합니다.
1-E질문입니다!
0
533
2
3-L 틀린 부분 피드백 부탁드립니다.
0
835
2
1-A문제 순열재귀함수 질문입니다.
0
396
1
1-A 일곱난쟁이문제입니다
0
470
1
문제 풀 때 방향성에 대해
0
809
1
맥에서 vs code로 실행 관련 질문입니다
0
530
1
17071번 메모리 초과
0
389
1
1-C질문입니다!
0
428
2
2-B BFS 시간초과질문
0
638
2
1-O 13번 라인
0
447
1
6-J 놀이공원 문제 질문
0
389
1
구현관련 질문
0
491
1
강의 교안
0
321
1
실력을 더 올리고나서 강의를 보는 것이 맞을까요?
0
550
1
안녕하세요! 재귀함수에 관해서 질문드립니다
0
540
1
1-K
0
481
2
3-G번 질문있습니다.
1
480
3
3-C 실행 시간 질문드립니다.
0
503
1
4-A 문제 풀이 질문있습니다.
0
601
2
비트마스킹 연산자 "1의 보수" 영문 표기법
0
441
1
격자탐색 문제에서 BFS 시간복잡도 질문드립니다.
0
349
1
3-O go 함수 질문 드립니다.
1
453
2
4-A 출력 질문
0
307
1
1주차 1-O 질문드립니다
0
265
1





