C++에서 문자열의 기본 사용법을 배우면서 sstream의 istringstream[1]이 콘솔과 같은 방식으로 문자열을 입력할 수 있다는 사실을 발견했습니다. 본질적으로 이 동작은 공백을 사용하여 문자열을 분할하는 것과 동일합니다.
그래서 이 기능을 사용하면 문자열 분할 함수를 구현할 수 있다고 생각했습니다. 배열을 효과적으로 얻고 매개변수는 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;
//以空格为分界的各数值则输入到了对应变量上
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"
//实例化一个字符串输入流,输入参数即待处理字符串 istringstream i_stream(str); //将length置零 length = 0; queue<string> q; //用一个string实例s接收输入流传入的数据,入队并计数 string s; while (i_stream>>s) { q.push(s); length++; }
위 내용은 C++에서 문자열 분할 기능 분할을 구현하는 방법은 무엇입니까? (코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!