1

Тема: string.split

чи є якась стандартна реалізація в С++ на подобі String.split в Java
String str = "dsfsfs sdfsf sfdsf ";
String[] strings = str.split(" ");
В масиві будуть слова розділені пробілом

2

Re: string.split

Ні, нема.
Наступне питання.

3

Re: string.split

Немає, але є на php :D

$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);

4

Re: string.split

в такому випадку і на python є

x = 'blue,red,green'
x.split(",")

['blue', 'red', 'green']
>>> 

Але це б не мало бути важко написати таку ф-цію, c++. Логіки мінімум треба...

5

Re: string.split

Гуглити дуже тяжко, але я зміг це зробити. Приклад аналогу.

Прихований текст

forum . vingrad . ru/sources/topic-161759.html

6

Re: string.split

Ось кілька варіантів, всі некрасиві: http://stackoverflow.com/questions/2361 … tring-in-c

Подякували: fkskf1

7

Re: string.split

чи є якась стандартна реалізація в С++ на подобі String.split в Java

Можна використати високоріневий стрінгпотік

#include <iostream>
#include <string>
#include <vector>
#include <sstream>
using namespace std;
 
int main(){
    string str = "dsfsfs    sdfsf sfdsf  dsdf";
    stringstream ss(str);
    vector< string > arr;
    while( ss>>str )
        arr.push_back(str);
    for( size_t i = 0; i < arr.size(); i++ )
        cout<<arr[i]<<endl;
    return 0;
}

http://ideone.com/x4G7Mr

dsfsfs
sdfsf
sfdsf
dsdf

8

Re: string.split

Це лише по пробілах.
По будь-якому символу допоможе getline з того ж istringstream.
У java, наскільки я зрозумів, по будь-якому рядку.
Тобто "dsfsfs    sdfsf sfdsf  dsdf" можна розділити по сепаратору "ds" і отримати

""
"fsfs    sdfsf sf"
"f  "
"ds"

9

Re: string.split

в Delphi (та Borland C++) був клас TStrings, який би міг допомогти в даному випадку. Він міг працювати з DelimitedText, і мав свій "delimiter" або "quotechar". Подивiться отут. Можливо, це допоможе.

10

Re: string.split

Якщо про сторонні бібліотеки, то є boost::split. А TStrings працює з дельфовим String, а не std::string.

Подякували: Betterthanyou1