Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将char数组的部分转换为Int数组进行计算_C++_Arrays_Type Conversion - Fatal编程技术网

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 *);