我有这个字符串: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);
}
但不是,我需要的。
答案 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个空格之间的子串?如果我是真的,找到第一个空格,然后打印字符串,直到找到另一个空格。你可以使用那个字符