SORU
25 EKİM 2008, CUMARTESİ


C bir dize bölmek ?

C bir dize bölmek için en zarif yolu nedir ? Dize kelimeleri boşluk ile ayrılmış oluşan olarak kabul edilebilir.

(C string fonksiyonları ya da karakter işleme/erişim bu tür ilgilenmiyorum unutmayın. Ayrıca, lütfen önceliği cevap verim elegance ver.)

Şu anda en iyi çözüm

#include <iostream>
#include <sstream>
#include <string>

using namespace std;

int main()
{
    string s("Somewhere down the road");
    istringstream iss(s);

    do
    {
        string sub;
        iss >> sub;
        cout << "Substring: " << sub << endl;

    } while (iss);

}

CEVAP
25 EKİM 2008, CUMARTESİ


Bu ders ile bir dize bölmek için kullanıyorum. İlk önceden oluşturulmuş bir vektör, ikinci döndürür yeni bir vektör sonuçları koyar.

#include <string>
#include <sstream>
#include <vector>

std::vector<std::string> &split(const std::string &s, char delim, std::vector<std::string> &elems) {
    std::stringstream ss(s);
    std::string item;
    while (std::getline(ss, item, delim)) {
        elems.push_back(item);
    }
    return elems;
}


std::vector<std::string> split(const std::string &s, char delim) {
    std::vector<std::string> elems;
    split(s, delim, elems);
    return elems;
}

DÜZENLEME:Bu çözüm boş belirteçleri atlamaz unutmayın, aşağıdaki boş bir 4 öğeleri bulmak, böylece:

std::vector<std::string> x = split("one:two::three", ':');

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FILIPeeeK

    FILIPeeeK

    22 Mayıs 2006
  • Propaganda Time

    Propaganda T

    19 EYLÜL 2010
  • TechShowsYou

    TechShowsYou

    3 Mart 2011