NX二次开发-以指定字符分割字符串
1 std::vector<std::string> SplitString(std::string str, const std::string& seperator) 2 { 3 std::vector<std::string> result; 4 int seperatorSize = seperator.size(); 5 TrimString(str); 6 if (str.empty()) 7 { 8 return result; 9 } 10 std::size_t pos = str.find(seperator); 11 while (pos != std::string::npos) 12 { 13 std::string tempStr = str.substr(0, pos); 14 TrimString(tempStr); 15 result.push_back(tempStr); 16 str = str.substr(pos + seperatorSize); 17 TrimString(str); 18 pos = str.find(seperator); 19 } 20 result.push_back(str); 21 return result; 22 }
1 void SplitStringToList(std::string inputStr, std::string seperator, std::vector<std::string> &outputList) 2 { 3 outputList.clear(); 4 5 TrimString(inputStr); 6 std::size_t pos = inputStr.find(seperator); 7 8 while (pos != std::string::npos) 9 { 10 std::string item = inputStr.substr(0, pos); 11 TrimString(item); 12 outputList.push_back(item); 13 inputStr = inputStr.substr(pos + 1); 14 pos = inputStr.find(seperator); 15 } 16 17 TrimString(inputStr); 18 if (!inputStr.empty()) 19 { 20 outputList.push_back(inputStr); 21 } 22 }
1 void TrimString(std::string& result, char trimChar) 2 { 3 if (result.empty()) 4 { 5 return; 6 } 7 8 std::size_t pos = result.find_last_not_of(trimChar); 9 if (pos != std::string::npos) 10 { 11 result.erase(pos + 1); 12 pos = result.find_first_not_of(trimChar); 13 result.erase(0, pos); 14 } 15 else 16 { 17 result.erase(result.begin(), result.end()); 18 } 19 }