gpt4 book ai didi

C++ substr 和 find_first_of

转载 作者:行者123 更新时间:2023-11-30 19:23:45 26 4
gpt4 key购买 nike

我想改变我的问题。

请让我知道发生了什么;

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 个。我做不到。

最佳答案

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)

这很容易发现 size 是从索引 4 到 10 的类型的子字符串,并且因为 type 的大小是 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);

关于C++ substr 和 find_first_of,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9919010/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com