第二个空格字符后的字符串

时间:2013-05-12 16:26:26

标签: c++ string

我有一个字符串

string str= "Jhon 12345 R333445 3434";
string str1= "Mike 00987 #F54543";    

所以从str我想要"R333445 3434"只是因为在第二个空格字符后出现我想要的所有内容,同样形成str1 "#F54543"

我使用stringstream并在空格后提取下一个单词,但它不会给出

的正确结果
str ="Jhon 12345 R333445 3434";

它只给予R333445 {@ 1}}

请提出一些更好的问题逻辑。

3 个答案:

答案 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

根据http://ideone.com/P1Knbe

答案 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);

reference on std::string::find

reference on std::string::substr