2017-11-25 2 views
0

std C++을 사용하여 쉼표로 구분 된 문자열을 분할하고 작은 따옴표로 묶인 문자열에서 쉼표를 무시하고 싶습니다. 예를 들면 :쉼표 구분 기호가있는 쉼표가 포함 된 분할 문자열

1, '2,3', 4,5 ', 6,7',

분할

1 
'2,3' 
4 
5 
'6,7' 
8 

내가이 최고의 정규식으로 처리 할 수 ​​있다고 생각된다 8, 하지만 패턴을 만드는 방법을 모르겠습니다. regex없는 모든 솔루션도 환영합니다. 감사.

답변

0

은 내가 C++ 구문이 어떻게 될지 모르겠지만, 여기에 몇 가지 의사 코드는 다음과 같습니다

vector<string> split(const string& value) 
{ 
    bool is_escaped = false; 
    vector<char> current; 
    vector<string> result; 

    for (char c : value) 
    { 
     if (c == '\'') 
     { 
      is_escaped = !is_escaped; 
     } 

     if (c == ',' && !is_escaped) 
     { 
      result.push_back(string(current.begin(), current.end()); 
      current.clear(); 
     } 
     else 
     { 
      current.push_back(c); 
     } 
    } 

    result.push_back(string(current.begin(), current.end()); 
    return result; 
} 

은 분명히 당신이 C++ 유효 조정해야하지만 트릭을 할해야합니다.

+0

몇 가지 변경 사항만으로 거의 상자에서 일했습니다. 나는 표준 라이브러리에 더 익숙해 져야한다고 생각한다. 감사! – user638473