>  기사  >  백엔드 개발  >  C++에서 문자열 분할 기능 분할을 구현하는 방법은 무엇입니까? (코드 예)

C++에서 문자열 분할 기능 분할을 구현하는 방법은 무엇입니까? (코드 예)

青灯夜游
青灯夜游앞으로
2019-11-25 16:50:563234검색

C++에서 문자열의 기본 사용법을 배우면서 sstream의 istringstream[1]이 콘솔과 같은 방식으로 문자열을 입력할 수 있다는 사실을 발견했습니다. 본질적으로 이 동작은 공백을 사용하여 문자열을 분할하는 것과 동일합니다.

C++에서 문자열 분할 기능 분할을 구현하는 방법은 무엇입니까? (코드 예)

그래서 이 기능을 사용하면 문자열 분할 함수를 구현할 수 있다고 생각했습니다. 배열을 효과적으로 얻고 매개변수는 C++의 실제 상황에 따라 조정됩니다.

1. 입력 및 출력:

string src("Avatar 123 5.2 Titanic K");
istringstream istrStream(src); //建立src到istrStream的联系
string s1, s2;
int n;  double d;  char c;
istrStream >> s1 >> n >> d >> s2 >> c;
//以空格为分界的各数值则输入到了对应变量上
반환: 처리된 문자열 배열의 첫 번째 주소

전달: 문자열 str, 구분 기호 토큰(기본 매개변수는 공백) 및 처리가 완료된 후를 나타내는 참조 매개변수 길이 동적으로 할당된 배열 길이

2. 데이터 투명성 처리: istringstream은 cin과 같이 공백을 데이터 사이의 경계로 처리하므로 구분 기호가 공백이 아닌 경우 들어오는 구분 기호를 공백으로 교체해야 합니다. 데이터 투명성을 위해 사전에 공백을 처리해야 합니다. 문자 교체는 라이브러리 알고리즘 [2]

string* split(int& length, string str, const char token = ' ')
  const char SPACE = 0;
  if(token!=' ') {
    // 先把原有的空格替换为ASCII中的不可见字符
    replace(str.begin(), str.end(), ' ', SPACE); 
    // 再把分隔符换位空格,交给字符串流处理
    replace(str.begin(), str.end(), token, ' ');
  }


3에서 교체()를 사용합니다. 데이터 분할:

  假设输入字符串为:"a b,c,d,e,f g"
  分隔符为非空格:','
  则被替换为:"aSPACEb c d e fSPACEg"
4.
완전한 코드

  //实例化一个字符串输入流,输入参数即待处理字符串
  istringstream i_stream(str); 
    //将length置零
  length = 0; 
  queue98c455a79ddfebb79781bff588e7b37e q;
  //用一个string实例s接收输入流传入的数据,入队并计数
  string s;
  while (i_stream>>s) {
    q.push(s);
    length++;
  }
이 기사는 C#.Net Tutorial 칼럼에서 가져온 것입니다. 학습을 환영합니다!

위 내용은 C++에서 문자열 분할 기능 분할을 구현하는 방법은 무엇입니까? (코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제