C ++ substr和find_first_of

时间:2012-03-29 04:19:15

标签: c strtok

我想改变我的问题。

请让我知道发生了什么;

type is "CHAR(10)"

size = type.substr(type.find_first_of("("), type.find_first_of(")"));
cout << "SIZE : " << size << endl;
cout << "SIZE : " << size.substr(1, (size.length())-1) << endl;

SIZE : (10)
SIZE : 10)

我只需要10.我不能那样做。

1 个答案:

答案 0 :(得分:1)

std :: string中的

函数substr有两个参数 第一个参数是开始的索引,第二个参数是你需要的子字符串的长度

string type = "CHAR(10)";

int k1,k2;
size = type.substr(k1=type.find_first_of("("), k2=type.find_first_of(")"));
cout<<"index="<< k1<<" len=" << k2 << endl;
cout << "SIZE : " << size << endl;
cout << "SIZE : " << size.substr(1, (size.length())-1) << endl;

index1=4 len=7
SIZE : (10)
SIZE : 10)

这很容易发现大小是索引4到10的类型的子串,并且因为类型的大小是8,所以代码打印直到字符串的最后一个字符

解决方案是:

k1= type.find_first_of("(");
k2=type.find_first_of(")");
k2-=k1;//now it's the length of size
size = type.substr(k1,k2);