C++ 将char数组的部分转换为Int数组进行计算
我有一个结构数组,其中包含公式名和化合物。我需要计算化合物的原子量C++ 将char数组的部分转换为Int数组进行计算,c++,arrays,type-conversion,C++,Arrays,Type Conversion,我有一个结构数组,其中包含公式名和化合物。我需要计算化合物的原子量 struct compounds{ char name[20]; // Dihydrogen Monoxide (Water) char formula[30]; //H2O }; 我无法将collection.formula转换为int值以进行实际重量计算。我试图使用isdigit()检查公式中的数字,并使用中的atoi()将它们转换为整数。我的代码如下: for (int
struct compounds{
char name[20]; // Dihydrogen Monoxide (Water)
char formula[30]; //H2O
};
我无法将
collection.formula
转换为int
值以进行实际重量计算。我试图使用isdigit()
检查公式中的数字,并使用
中的atoi()
将它们转换为整数。我的代码如下:
for (int i=0; i<SIZE; i++){
infile >> collection[i].name >> collection[i].formula;
//cout << collection[i].name << " " << collection[i].formula << endl;
//Convertion CHAR to INT
for(int j=0; j<30; j++){
if(isdigit(collection[i].formula[j])){
k = atoi (collection[i].formula[j]);
}
}
}
原子量(可以是浮点数)或质量数(整数)?不管怎样,计算都依赖于元素!从公式中提取数字不会给你带来任何有趣的东西…或者我错过了一些要点?我知道,我试图从公式中提取数字的原因是想知道化合物中元素的原子数。例如水,2个氢原子和1个氧原子。=>2*氢气重量+氧气_Weight@YuryStanev,那么你的意思是,你想从H2O中提取
2
(氢)和1
(水)?@abhishek_naik是的,这正是我想要的。@YuryStanev,在这种情况下,你可以提取每个字符并测试它是否是一个数字。当然,您必须处理元素出现时没有任何后缀号的情况(例如,只有H2O而不是H2O1)。
for (int i=0; i<SIZE; i++){
infile >> collection[i].name >> collection[i].formula;
//cout << collection[i].name << " " << collection[i].formula << endl;
//Convertion CHAR to INT
for(int j=0; j<30; j++){
if(isdigit(collection[i].formula[j])){
k = atoi (collection[i].formula[j]);
}
}
}
//Store in array of INT
for (int m=0; m<30; m++){
formula_1[m] = k;
}
midterm_q2.cpp: In function 'int main()':
midterm_q2.cpp:40:39: error: invalid conversion from 'char' to 'const char*' [-fpermissive]
k = atoi (collection[i].formula[j]);
^
In file included from midterm_q2.cpp:3:0:
c:\mingw\include\stdlib.h:335:38: note: initializing argument 1 of 'int atoi(const char*)'
_CRTIMP __cdecl __MINGW_NOTHROW int atoi (const char *);