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ş:
Nasıl Bash ayırıcı üzerinde bir dize b...
Java nasıl bir dize bölmek...
Kolay yeni satır üzerinde bir dize böl...
Nasıl sınırlayıcı olarak herhangi bir ...
Nasıl madde x ulaşabilmem bir dize böl...