C에서 ++를 사용하여 여러 구분 기호로 문자열을 분할하는 방법을 찾고 있는데, 출력에서 구분 기호를 잃지 않고 순서대로 분할 된 부분으로 구분 기호를 유지합니다 :구분 기호로 C++ 분할 문자열 및 결과에서 구분 기호를 유지
입력
AAA, bbb.ccc, DDD-EEE;
출력
AAA, BBB. ccc, ddd-eee;
나는 C#이나 java에서 C++ 솔루션을 찾고있다. 부스트를 사용하지 않는 것이 좋다.
C에서 ++를 사용하여 여러 구분 기호로 문자열을 분할하는 방법을 찾고 있는데, 출력에서 구분 기호를 잃지 않고 순서대로 분할 된 부분으로 구분 기호를 유지합니다 :구분 기호로 C++ 분할 문자열 및 결과에서 구분 기호를 유지
입력
AAA, bbb.ccc, DDD-EEE;
출력
AAA, BBB. ccc, ddd-eee;
나는 C#이나 java에서 C++ 솔루션을 찾고있다. 부스트를 사용하지 않는 것이 좋다.
regex_iterator
의 예제 위에 솔루션을 빌드 할 수 있습니다. 예를 들어, 당신이 알고있는 경우 구분 기호는 쉼표, 마침표, 세미콜론, 하이픈, 당신은 분리 또는 비 분리의 일련의 중 하나를 캡처하는 정규식 사용할 수 있습니다
([.,;-]|[^.,;-]+)
드롭하는 샘플 코드에 당신은 something like this로 끝날 :
#include <iostream>
#include <string>
#include <regex>
int main()
{
// the following two lines are edited; the remainder are directly from the reference.
std::string s ("aaa,bbb.ccc,ddd-eee;");
std::regex e ("([.,;-]|[^.,;-]+)"); // matches delimiters or consecutive non-delimiters
std::regex_iterator<std::string::iterator> rit (s.begin(), s.end(), e);
std::regex_iterator<std::string::iterator> rend;
while (rit!=rend) {
std::cout << rit->str() << std::endl;
++rit;
}
return 0;
}
시도가 당신이 좋아하는 다른 정규 표현식으로 대체.
처리되지 않은 예외 오류로 인해 어떤 이유로 든 작동하지 않습니다. 여분의 백 슬래시를 추가하려고 시도했지만 도움이되지 않습니다. VS2013을 사용하고 있습니다. – Loki