两个空格之间的输出

时间:2016-03-26 14:12:05

标签: c++

我有这个字符串:System->ONDRASHEK: Nick aaasssddd není v žádné místnosti我需要aaasssddd作为字符串的输出。每次输出都不一样。所以必须从两个空格中获取。我尝试过substr或split,但我对C ++的了解非常差。

我找到了这段代码:

   #include <string>
   #include <iostream>

   int main()
   {
    const std::string str = "System->ONDRASHEK: Nick aaasssddd není v žádné        místnosti";

    size_t pos = str.find(" ");
    if (pos == std::string::npos)
    return -1;

    pos = str.find(" ", pos + 1);
    if (pos == std::string::npos)
    return -1;

    std::cout << str.substr(pos, std::string::npos);
   }

但不是,我需要的。

2 个答案:

答案 0 :(得分:1)

我假设你想要给定字符串中的第三个单词。

您已找到第二个空格,但您的输出是从第二个空格到字符串末尾的子字符串。

相反,您需要找到第三个空格,并在两个空格之间输出子字符串。

所以这是修改。

#include <string>
#include <iostream>

int main()
{
    const std::string str = "System->ONDRASHEK: Nick aaasssddd není v žádné        místnosti";

    size_t pos = str.find(" ");
    size_t start;
    size_t end;
    if (pos == std::string::npos)
        return -1;

    pos = str.find(" ", pos + 1);
    if (pos == std::string::npos)
        return -1;

    start = pos + 1;

    pos = str.find(" ", pos + 1);
    if (pos == std::string::npos)
        return -1;

    end = pos;

    std::cout << str.substr(start, end - start) << std::endl;
}

答案 1 :(得分:0)

请详细说明你的问题?你需要2个空格之间的子串?如果我是真的,找到第一个空格,然后打印字符串,直到找到另一个空格。你可以使用那个字符