2014-02-27 9 views
7

ich eine Funktion zum Spalten Zeichenfolge haben:C++ boost :: spalten zunächst

boost::split(r,lines[i], boost::is_any_of("=")); 

Above Code teilt Zeichenfolge von jedem „=“ Ich möchte diesen Code zu transformieren, indem nur ein „=“ aufzuspalten. Beispiel:

__ga=223478=90234=234 

Nach Split:

__ga 
223478=90234=234 

Wie dies zu tun?

Antwort

9

Boost ist dafür nicht notwendig. Eine mögliche Lösung wäre std::string::find_first_of() zu verwenden und zwei Strings erstellen mit std::string::substr() mit dem Ergebnis:

#include <iostream> 
#include <string> 

int main() 
{ 
    std::string name_value = "__ga=223478=90234=234"; 
    std::string name; 
    std::string value; 

    const auto equals_idx = name_value.find_first_of('='); 
    if (std::string::npos != equals_idx) 
    { 
     name = name_value.substr(0, equals_idx); 
     value = name_value.substr(equals_idx + 1); 
    } 
    else 
    { 
     name = name_value; 
    } 

    std::cout << name << std::endl 
       << value << std::endl; 

    return 0; 
} 

Ausgang:

 
__ga 
223478=90234=234 
+2

+1 Nicht boost alles braucht. –

+0

Funktioniert gut, vielen Dank! – mitch