如何从字符串中删除第一个单词?

tem*_*boy 3 c++ c++11

我正在寻找从a中删除第一个单词的最佳方法std::string.这就是我所拥有的,但我觉得这是过于令人沮丧的事情.最好和最短的方法是什么?谢谢.

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

int main()
{
    std::string str{"Where is everybody?"};
    std::string first;
    if (std::stringstream{str} >> first)
    {
        str.erase(str.begin(), str.begin() + first.size());
    }
    std::cout << str; // " is everybody?"
}
Run Code Online (Sandbox Code Playgroud)

seh*_*ehe 8

小调整,利用下半年的IO流:)

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

int main()
{
    std::string str{"Where is everybody?"};

    std::string first;
    std::istringstream iss{str};
    iss >> first;

    std::ostringstream oss;
    oss << iss.rdbuf();

    std::cout << oss.str(); // " is everybody?"
}
Run Code Online (Sandbox Code Playgroud)


das*_*ght 6

您可以在没有流的情况下执行此操作:跳过初始空格,找到之后的第一个空格,步行到下一个非空格,然后使用substr以获取其余的string:

int i = 0;
while (isblank(str[i])) i++;
while (!isblank(str[i])) i++;
while (isblank(str[i])) i++;
str = str.substr(i);
Run Code Online (Sandbox Code Playgroud)

这是关于ideone演示.