2017-03-27 2 views
-1
vector<string> Util::split(string str, char delimiter){ 
    vector<string> internal; 
    stringstream ss(str); // Turn the string into a stream. 
    string tok; 

    while(getline(ss, tok, delimiter)) { 
    internal.push_back(tok); 
    } 

return internal; 
} 

String str = "k 1 1";Spliting Zeichenfolge in separate Variablen in C++

getline (ss, tok, ' ‚)

wenn ich versuche, die Größe für die Rückkehr Vektor zu überprüfen ist es Größe ONE.

Zeichenfolge str = "k, 1,1";

getline (ss, tok, '')

Wenn jedoch i das Trennzeichen ein Komma ändern und die Stringvariable tok modifizieren.

würde die Größe dann DREI sein

So gibt es ein Problem mit weißen Flecken ist

Was kann ich diese Arbeit tun, um? Ich bin fast den ganzen Tag dabei.

int main(){ 

    Util src; 
    int runProgram = 1; 
    string input; 

    while(runProgram!=0){ 
     cout << "Input your command to perfrom operation: " << endl; 
     cin >> input; // user inputs "k 1 1" 

     vector<string>sep=src.split(input, ' '); 
     cout << sep.size() << endl; // size is one when it should be 3 

    } 
} 
+0

Der gezeigte Code wird nicht funktionieren, egal, was in 'tok' setzen wird, da die' stringstream' aus einem anderen, mysteriös Variable mit dem Namen 'str' aufgebaut wird. Basierend auf der Beschreibung, sieht es für mich so aus, als wäre der Code nicht echter Code, sondern Fantasy-Code. Eine echte Antwort auf eine echte Frage erfordert echten Code, nicht Fantasy-Code. –

+0

Sie haben Recht meinen Fehler – Marke

+0

Ihr Code wie jetzt gezeigt [funktioniert einwandfrei] (http://coliru.stacked-crooked.com/a/062c49efb0278e67). Bitte geben Sie eine [mcve] an, die das Problem tatsächlich aufweist. – zett42

Antwort

0
#include <iostream> 
using namespace std; 

int delimiter(string & str,char ch){ 
    unsigned int count=1,size=str.size(); 
    if(size==0){ 
      return 0; 
    } 
    for(unsigned int i=0;i<size;i++){ 
      if(str[i]==ch){ 
        count++; 
      } 
    } 
    return count; 
} 

int main (int argc,char* array[]){ 
    string s="1 1 k"; 

    cout<<delimiter(s,' ') << endl; 
} 
Verwandte Themen