0

我有一个字符串

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

所以从 str 我"R333445 3434"只想要因为在第二个空格字符之后出现我想要的所有东西,类似的形式str1 "#F54543"

我使用了 stringstream 并在空格之后提取下一个单词,但它不会给出正确的结果

str ="Jhon 12345 R333445 3434";

它只给 R333445 它应该给"R333445 3434"

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

4

3 回答 3

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

于 2013-05-12T16:33:34.927 回答
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;
于 2013-05-12T16:35:04.483 回答
1

您可以找到第二个空格的索引,然后将子字符串从一个位置经过它带到末尾。

int index = 0;
for (int i = 0; i < 2; ++i){
    index = (str.find(" ", index)) + 1;
}

ans = str.substr(index);

参考 std::string::find

对 std::string::substr 的引用

于 2013-05-12T16:36:12.080 回答