2017-03-30 2 views
-4

Ich suche nach einer Funktion zum Aufteilen von Leerzeichen in C++. Ich finde diesen Code im Internet. Ich möchte wissen, was sagt.Wie benutze ich mit istringstream in C++?

string line; 
    istringstream buf(line); 
    istream_iterator<string> beg(buf), end; 
    vector<string> tokens(beg, end); 
    return tokens; 
+0

Seien Sie präziser; Ich glaube, es gibt Tonnen von Artikeln, die es erklären. SO ist keine Seite, um Ihnen Code-Interpretation zu geben. –

+0

warum brauche ich istringstream? Ich möchte nach Whitespace teilen –

+0

Bitte bearbeiten Sie Ihre Frage, um Ihren genauen Zweck anzugeben. –

Antwort

0

See:

#include <iostream> 
#include <sstream> 
#include <vector> 
#include <iterator> 

std::vector<std::string> SplitByWhiteSpace(std::string stringToSplit) 
{ 
    std::istringstream buf(stringToSplit); 
    std::istream_iterator<std::string> beg(buf), end; 
    return std::vector<std::string>(beg, end); 
} 

int main() { 
    std::vector<std::string> tokens = SplitByWhiteSpace("Hello World!"); 

    for (std::size_t i = 0; i < tokens.size(); ++i) 
    { 
     std::cout<<tokens[i]<<"\n"; 
    } 

    return 0; 
} 

Dieser Code die Zeichenfolge von white-space teilt und gibt alle Tokens in einem Vektor. Sie können dann alle Token im Vektor drucken.

Es ist fast die gleiche wie zu tun (das gleiche Ergebnis, andere Technik):

std::vector<std::string> SplitByWhiteSpace(std::string stringToSplit) 
{ 
    std::string word; 
    std::vector<std::string> tokens; 
    std::istringstream buf(stringToSplit); 

    while (buf >> word) 
    { 
     tokens.push_back(word); 
    } 

    return tokens; 
} 
+0

Ich versuche zu verstehen, wo zu teilen passiert? wenn ich den std :: vector schreiben (Anfang, Ende); ?? –