C ++ распечатать ограничение количества слов - PullRequest
1 голос
/ 14 ноября 2009

Я новичок в C ++, и мне интересно, как это сделать. Я хочу написать код, который принимает в текстовой строке. Например. «Hello stackoverflow - действительно хороший сайт»

Из вывода я хочу только распечатать первые три слова и пропустить остальные.

Вывод, который я хочу: "Hello stackoverflow is"

Если бы это была Java, я бы использовал строку split (). Что касается C ++, я действительно не знаю. У них что-нибудь похожее или каков подход к C ++?

Ответы [ 3 ]

7 голосов
/ 14 ноября 2009

Оператор >> разбивает поток на слова.
Но не определяет конец строки.

Что вы можете сделать, это прочитать строку и получить первые три слова из этой строки:

#include <string>
#include <iostream>
#include <sstream>

int main()
{
    std::string line;
    // Read a line.
    // If it succeeds then loop is entered. So this loop will read a file.
    while(std::getline(std::cin,line))
    {
        std::string word1;
        std::string word2;
        std::string word3;

        // Get the first three words from the line.
        std::stringstream linestream(line);
        linestream >> word1 >> word2 >> word3;
    }

    // Expanding to show how to use with a normal string:
    // In a loop context.
    std::string       test("Hello stackoverflow is a really good site!");
    std::stringstream testStream(test);
    for(int loop=0;loop < 3;++loop)
    {
        std::string     word;
        testStream >> word;
        std::cout << "Got(" << word << ")\n";
    }

}
0 голосов
/ 01 июля 2012

Это просто и на 100% надежно

void Split(std::string script)  
{

   std::string singelcommand;
   std::stringstream foostream(script);

   while(std::getline(foostream,singelcommand))
   show_remote_processes(_ssh_session,singelcommand);

}    
0 голосов
/ 14 ноября 2009

Чтобы дать вам несколько советов для дальнейшего исследования:

Для реального решения C ++ вам может потребоваться поискать stream и streaming operators как >>. CPP Reference - хороший онлайн-справочник по API.

Все еще действительный C ++, но укорененный в его истории C будет функция strtok() для токенизации строки, которая имеет несколько потенциальных проблем. Как правильно заметил Мартин, он изменяет исходные данные, что не всегда возможно. Кроме того, существуют проблемы с безопасностью потоков и / или повторным входом.

Так что, как правило, вы намного лучше, используя потоки и строки C ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...