-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest.cpp
More file actions
92 lines (78 loc) · 2.38 KB
/
Copy pathtest.cpp
File metadata and controls
92 lines (78 loc) · 2.38 KB
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <iostream>
#include <sstream>
#include <cctype>
#include <algorithm>
#include "util.h"
#include <iostream>
using namespace std;
std::string convToLower(std::string src)
{
std::transform(src.begin(), src.end(), src.begin(), ::tolower);
return src;
}
/** Complete the code to convert a string containing a rawWord
to a set of words based on the criteria given in the assignment **/
std::set<std::string> parseStringToWords(string rawWords)
{
// set <string> keywords;
// istringstream iss(rawWords);
// do { //iterate istringstrem
// string substr = "";
// string substr2 = "";
// iss >> substr; //removes whitespace
// for(char s: substr){ //split at punctuation
// if(ispunct(s) != 0){
// int loc = substr.find(s);
// if(substr.substr(loc + 1).length() >= 2){ //substring after
// substr = substr.substr(loc + 1);
// }
// if(substr.substr(0, loc).length() >= 2){ //substring before
// substr2 = substr.substr(0, loc);
// }
// if(substr != substr.substr(loc + 1) && substr2 != substr.substr(0, loc)){ //if neither greater than 2
// continue;
// }
// }
// }
// convToLower(substr); //convert to lower case
// convToLower(substr2);
// if(substr != ""){
// keywords.insert(substr); //populate set
// }
// if(substr2 != ""){
// keywords.insert(substr2); //populate set
// }
// } while (iss);
// return keywords;
set<string> keywords;
string substr;
string token;
istringstream iss(rawWords);
while (iss >> substr) {
token = "";
for(char& s : substr){
if(ispunct(s)){
if(token.length() >= 2){ //check of token before punct
token = convToLower(token);
keywords.insert(token); //adding valid token
}
token = "";
}
else{
token += s;
}
}
if(token.length() >= 2){
token = convToLower(token);
keywords.insert(token);
}
}
return keywords;
}
int main() {
string rawWords = "men'ss Clothing";
std::set<std::string> result = parseStringToWords(rawWords);
for (string x: result) {
cout << x << endl;
}
}