我有一个字符串
string str= "Jhon 12345 R333445 3434";
string str1= "Mike 00987 #F54543";
所以从str我想要"R333445 3434"
只是因为在第二个空格字符后出现我想要的所有内容,同样形成str1 "#F54543"
我使用stringstream并在空格后提取下一个单词,但它不会给出
的正确结果str ="Jhon 12345 R333445 3434";
它只给予R333445 {@ 1}}
请提出一些更好的问题逻辑。
答案 0 :(得分:2)
怎么样
#include <string>
#include <iostream>
int main()
{
const std::string str = "Jhon 12345 R333445 3434";
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);
}
<强>输出强>
R333445 3434
答案 1 :(得分:2)
似乎你想跳过前两个单词并阅读其余的单词,如果这是正确的,你可以做这样的事情。
std::string str("Jhon 12345 R333445 3434"");
std::string tmp, rest;
std::istringstream iss(str);
// Read the first two words.
iss >> tmp >> tmp;
// Read the rest of the line to 'rest'
std::getline(iss,rest);
std::cout << rest;
答案 2 :(得分:1)
您可以找到第二个空格的索引,然后将子字符串从一个位置经过它到最后。
int index = 0;
for (int i = 0; i < 2; ++i){
index = (str.find(" ", index)) + 1;
}
ans = str.substr(index);