안녕하세요 엘체프 GG 임돠
문자열분리 해보는 문제 입니다.
문) 아래와 같이 문자열이 주어졌을 때 출력 결과가 정렬되어 나올 수 있도록 프로그램을 작성하십시오.
(부분 완성 문제)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 |
#include <iostream>
#include <string>
#include <sstream>
#include <list>
#include <vector>
// 문장을 입력받아서 단어로 분리. 단, 특수 문자는 제외시키도록 조치.
using namespace std;
string replaceSpecWord(string str);
list<string> splitSentence(string sent);
string replaceSpecWord(string str) {
string word = " \t\n.,!?:;-";
size_t found = str.find_first_of(word);
while (found != string::npos)
{
str.replace(found, word.length(), "");
found = str.find(word, found+1);
}
return str;
}
list<string> splitSentence(string sent) {
list<string> strList;
string temp;
istringstream iss;
iss.str(sent);
while (iss >> temp) {
temp= replaceSpecWord(temp);
strList.push_back(temp);
}
return strList;
}
int main(void) {
string sent = "내일은, 99주년. 3월1일\t 삼일절입니다!";
list<string> wList = splitSentence(sent);
// 나머지 부분을 완성하십시오.
// 힌트) 문자열 변수에 반복자 패턴을 결합하여 인쇄한다.
system("PAUSE");
return 0;
} |
-답
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 |
#include <iostream>
#include <string>
#include <sstream>
#include <list>
#include <vector>
// 문장을 입력받아서 단어로 분리. 단, 특수 문자는 제외시키도록 조치.
using namespace std;
string replaceSpecWord(string str);
list<string> splitSentence(string sent);
string replaceSpecWord(string str) {
string word = " \t\n.,!?:;-";
size_t found = str.find_first_of(word);
while (found != string::npos)
{
str.replace(found, word.length(), "");
found = str.find(word, found + 1);
}
return str;
}
list<string> splitSentence(string sent) {
list<string> strList;
string temp;
istringstream iss;
iss.str(sent);
while (iss >> temp) {
temp = replaceSpecWord(temp);
strList.push_back(temp);
}
return strList;
}
int main(void) {
string sent = "내일은, 99주년. 3월1일\t 삼일절입니다!";
list<string> wList = splitSentence(sent);
// 나머지 부분을 완성하십시오.
list<string>::iterator it = wList.begin();
while (it != wList.end()) {
cout << *it++ << endl;
} // while
system("PAUSE");
return 0;
} |
cs |
감사합니다.
'스터디 > C,C++' 카테고리의 다른 글
map 정렬 문제 (6) | 2018.03.05 |
---|---|
C++ map을 이용한 login 문제 (6) | 2018.02.28 |
C 문자열(string) 바꾸기 (6) | 2018.02.28 |
마지막 C 시험문제 공백 사각찍기 (7) | 2018.02.28 |
C++ 문자열 경사면 인쇄하기 (9) | 2018.02.19 |