C ++打印出限制字数

时间:2009-11-14 19:03:03

标签: c++

我是C ++的初学者,我想知道如何做到这一点。 我想写一个接受文本行的代码。例如。 “Hello stackoverflow是一个非常好的网站”

从输出中我只想打印出前三个单词并跳过其余单词。

我想要的输出:“Hello stackoverflow是”

如果是Java,我会使用字符串split()。至于C ++,我真的不知道。他们的任何类似或C ++的方法是什么?

3 个答案:

答案 0 :(得分:7)

运营商>>把一条小溪打成了文字 但是没有检测到行尾。

你可以做的是读一行,然后从该行获得前三个单词:

#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";
    }

}

答案 1 :(得分:0)

为您提供进一步调查的一些建议:

对于真正的C ++解决方案,您可能希望查找streamstreaming operators,如>>CPP Reference是一个很好的在线API参考。

仍然有效的C ++,但根据其C历史记录将是strtok()函数来标记字符串,这有几个潜在的问题。正如Martin正确指出的那样,它修改了源数据,这并不总是可行的。此外,线程安全和/或重新入侵也存在问题。

通常情况下,使用流和C ++字符串会更好。

答案 2 :(得分:0)

这很容易且100%可靠

void Split(std::string script)  
{

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

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

}