我如何将char数组转换为int?

时间:2014-01-30 04:22:55

标签: c++ char

所以输入文件如下所示:

Adam Zeller 45231 78 86 91 64 90 76 
Barbara Young 274253 88 77 91 66 82 93 
Carl Wilson 11223 87 77 76 78 77 82 

SIZE = 256;

我使用getline函数将第一行放入char lineOne[SIZE],其他行放在lineTwo[SIZE]lineThree[SIZE]中但我需要能够修改最后一行每行5个数字,如重新排序等。我该怎么做呢?我不认为我可以将整个char数组转换为int,因为它不仅有行中的整数而且我真的不知道该怎么做,我被卡住了。

此外,我无法使用字符串库。

2 个答案:

答案 0 :(得分:1)

首先,您将使用strtok()来“标记”您的输入行。这意味着它会将其拆分为块。当然,你会把它分开。

只要您的数据遵循上面的模式,就可以跳过前两个,然后使用atoi()将ASCII转换为整数。

将这些整数存储在数组中,您可以随意使用它们。

获取所需值的粗略伪代码可能如下所示:

char *ptr;
    for each line
    {
       ptr=strtok(lineOne," "); // do the initial strtok with a pointer to your string. 
       //At this point ptr points to the first name
       for(number of things in the line using an index variable)
       {
           ptr=strtok(NULL," "); // at this point ptr points to the last name
           if(index==0)
              {
              continue;  //causes the for loop to skip the rest and go to the next iteration 
              }
           else
              {
              ptr=strtok(NULL," "); // at this point ptr points to one of the integer values, 
                                 //index=1 being the first one.... (careful not to get off by one here)
              int value=atoi(ptr)
              /// stuff the value into your array... etc...
              storageArray[index-1]=value; /// or something like this
              .....
              }    
       }
    }

答案 1 :(得分:0)

正如其他答案之一所示,我会使用strtok()来标记输入,但我还会实现一个简单的结构来保存每条记录。然后使用do-while循环读取每一行,将该行拆分为标记,并将其读入记录。