C ++读取std :: string的选择部分

时间:2016-05-19 01:21:28

标签: c++ string

我一直试图只提取" Apple"从下面的字符串即。之间","和" /"。有没有办法在分隔符之间提取字符串?目前,","之后的所有字符串;提取。

std::string test = "Hello World, Apple/Banana";

std::size_t found;                  
found = test.find(",");

std::string str3 = test.substr(found); 
std::cout << str3 << std::endl;

3 个答案:

答案 0 :(得分:0)

一次一步。首先,在逗号后提取部分。然后在下面的斜杠之前提取零件。

或者,substr()也会选择第二个参数,即要提取的最大字符数,而不是提取字符串左边的所有内容。因此,如果您计算要提取的字符数,也可以通过一次substr()调用来完成。

答案 1 :(得分:0)

第一部分是找到子串&#34; Apple&#34;开始。您可以使用find()。它返回子字符串的第一个字符的位置。然后,您可以使用std :: string构造函数传入包含start和stop位置的原始字符串。

参考 String find()String constructor

std::string extractedString = std::string(test, test.find("Apple"), sizeof("Apple") - 1);

答案 2 :(得分:0)

您可以使用>>> df1.loc[:, df1.gt(10).any(axis=0)] 0 1 2 3 4 a 0 1 2 3 4 b 5 6 7 8 9 c 10 11 12 13 14 d 15 16 17 18 19 的第二个参数来查找提取的长度

substr

使用VC2013时会输出#include <string> using namespace std; int main(int argc, char * argv[]){ string test = "Hello World, Apple/Banana"; size_t f1 = test.find(','); size_t f2 = test.find('/'); string extracted = test.substr(f1, f2 - f1); } 。如果您将, Apple更改为f1,则会输出size_t f1 = test.find(',') + 2;