我想改变我的问题。
请让我知道发生了什么;
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.我不能那样做。
答案 0 :(得分:1)
函数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);