2016-04-25 13 views
-1

Ich arbeite an einem Projekt, das die Anzahl der Wörter und die Indizes jedes Wortes im Absatz finden muss ... Ich habe den Code geschrieben, der die Anzahl der Wörter in einer Zeichenfolge zählt, aber ich blieb beim Finden der Indizes von Wörtern,Wie kann ich die Sequenznummer (Index) von Word in einem solchen Absatz C++ finden?

wie: Hallo John wie geht es dir ich dich vermissen ..

ich die Indizes wie drucken möchten: 0 1 2 3 4 5 6 7

hier ist der Code:

int _tmain(int argc, _TCHAR* argv[]) 
{ 

    int count_words(std::string); 


    std::string input_text; 
    std::cout<< "Enter a text: "; 
    std::getline(std::cin,input_text); 

    int number_of_words=1; 
    int counter []={0}; 
    for(int i = 0; i < input_text.length();i++) 
     if(input_text[i] == ' ') 

      number_of_words++; 

    std::cout << "Number of words: " << number_of_words << std::endl; 
    //std:: cout << number_of_words << std::endl; 
    system ("PAUSE"); 

} 
+0

Ich bin mir nicht sicher, ob ich Ihre Frage verstehe. Wenn Sie 'n' Wörter zählen, dann sind Ihre Indizes von' 0 bis n-1'. Oder ist es etwas anderes? –

+0

ja genau, das ist was ich meine @ bkVnet –

+0

Also, wenn Sie die Anzahl haben, warum nicht Schleife von '0 bis n-1' diese Zahl anzeigen? –

Antwort

0

Hoffentlich diese Hilfe s. Bearbeitet, um die Verwendung der count_words-Funktion einzuschließen.

#include <iostream> 
#include <sstream> 

void count_words(std::string); 

int main(){ 
    std::string input_text, output_text; 
    std::cout<< "Enter a text: "; 
    std::getline(std::cin,input_text); 

    count_words(input_text); 


    system ("PAUSE"); 

    return 0; //MUST RETURN AN INTEGER VALUE FROM 'INT MAIN' 
} 

void count_words(std::string inputString){ 
    std::string output_text; 
    std::stringstream indexes; 
    int number_of_words=0; //If there are no words, it would be false, make it 0. 
    //int counter []={0}; //This serves no purpose. 
    if(!inputString.empty()){// test to make sure it isn't empty. 
     number_of_words++; 
     for(int i = 0; i < inputString.length();i++){ // For loops should have curly braces {} containing their statement. 
      if(inputString[i] == ' '){ 
       number_of_words++; 
      } 
      if((isalpha(inputString[i]))&&inputString[i-1]==' '){ //test for following space separated word 
       indexes << i << " "; 
      } 

     } 
    } 

    output_text = indexes.str(); //convert stringstream to string 

    std::cout << "Number of words: " << number_of_words << std::endl; 
    //std:: cout << number_of_words << std::endl; //duplicate info 
    std::cout << "Indexes: " << output_text << std::endl; 
} 
+0

@ NonCreature0714 so vielen Dank..aber ich habe einen Fehler in std :: stringstream Indizes; ..... das ist (unvollständiger Typ ist nicht erlaubt), hast du eine Idee ?? –

+0

ah, du musst #include NonCreature0714

0

Ich bin mir nicht sicher, ob ich die Frage verstehe. Sie brauchen nur die "Indizes" ausdrucken ?? so was? (Mit Ihrem eigenen Code)

#include <iostream> 
#include <vector> 
#include <string> 

void stringTokenizer(const std::string& str, const std::string& delimiter, std::vector<std::string>& tokens) { 
    size_t prev = 0, next = 0, len; 

    while ((next = str.find(delimiter, prev)) != std::string::npos) { 
    len = next - prev; 
    if (len > 0) { 
     tokens.push_back(str.substr(prev, len)); 
    } 
     prev = next + delimiter.size(); 
    } 

    if (prev < str.size()) { 
    tokens.push_back(str.substr(prev)); 
    } 
} 

int main() 
{ 

    std::vector <std::string> split; 
    std::string input_text; 
    std::cout<< "Enter a text: "; 
    std::getline(std::cin,input_text); 

    stringTokenizer(input_text, " ", split); 
    int number_of_words = 0; 
    for (std::vector<std::string>::iterator it = split.begin(); it != split.end(); it++, number_of_words++) { 
    std::cout << *it << " " << number_of_words << std::endl; 
    } 

} 
+0

Dank soo viel, es ist Arbeit gut .. ich habe eine andere Frage bitte: Wie kann ich jeden Satz mit seinem Index drucken? Vielen Dank im Voraus! –

+0

Denken Sie an diese: Wie viele Wörter in, "" Hallo John Wie geht es dir Ich vermisse dich "'? – user4581301

+0

Ich hoffe, dass ich Ihnen helfen zu lernen und nicht nur Ihre Hausaufgaben – YosefMac