gpt4 book ai didi

c++ - 解析 int 和 string

转载 作者:行者123 更新时间:2023-11-30 02:10:21 25 4
gpt4 key购买 nike

您好,我不确定在这里问这个问题是否合适。无论如何,我已经编写了这段代码来解析分子式并将其拆分为原子和每个原子的数量。

例如,如果我输入 "H2O",我将为原子数组获取 {"H", "O"},在数量数组中,我将获取 {2, 1}。我没有考虑大于 9 的数量,因为我认为没有分子可以结合大于 8 的东西。

反正我是新手,所以我想知道这段代码是否可以做得更好?

   string formula = "H2O";
int no, k = 0, a = 0;
string atom[10];
int amount[10];
bool flag = true;
stringstream ss(formula);

for(int i = 0; i < formula.size(); ++i)
{

no = atoi(&formula[i]);
if(no == 0 && (flag || islower(formula[i]) ) )
{
cout << "k = " << k << endl;
atom[k] += formula[i];
flag = false;
cout << "FOO1 " << atom[k] << endl;
amount[a] = 1;
}
else if(no != 0)
{
amount[a] = no;
cout << "FOO2 " << amount[a] << endl;
a++;
flag = true;
k++;
}
else
{
k++;
a++;
atom[k] = formula[i];
cout << "FOO3 " << atom[k] << endl;
amount[a] = 1;

flag = false;
}

cout << no << endl;
}

最佳答案

您是否考虑过使用正则表达式的方法?您可以访问 Boost 或 TR1 正则表达式吗?单个原子及其计数可以很容易地表示为:

(根据评论修改后)

([A-Z][a-z]{0,2})([0-9]*)

然后你只需要在你的输入字符串中重复找到这个模式并提取不同的部分。

关于c++ - 解析 int 和 string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4691389/

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