如何从字符串中读取多个整数

时间:2017-01-07 14:04:06

标签: c++ string

INPUT:

Mint Ice Cream      6 80  

代码:

int IntAmount=2;
string line, name, data;
ifstream fd('Input.txt);

getline(fd, line);
name=line.substr(0, 20); // name="Mint Ice Cream      "
data=line.substr(20);    // data ="6 80"

for(int i=0; i<IntAmount; i++){

   // code that reads N[i] integer by integer from string called data

}

我得到了一些存储在同一个字符串data中的整数。如果我知道它们有N[i],我该如何将它们提取到数组IntAmount中?我知道我可以用更基本的方式读取输入,但这只是非常简化的输入。

2 个答案:

答案 0 :(得分:0)

以下功能将为您完成任务:

int string_to_int(char const *input_str, std::size_t count)
{
 int result_integer = 0;
 std::size_t i = 0 ;
 if ( input_str[0] == '+' || input_str[0] == '-' ) 
      ++i;
 while(i < count)
 {
      if ( input_str[i] >= '0' && input_str[i] <= '9' )
      {
          int val = (input_str[0] == '-') ? ('0' - input_str[i] ) : (input_str[i]-'0');
          result_integer = result_integer * 10 + val;
      }
      else
          throw std::invalid_argument("invalid string input");
      i++;
 }
 return result_integer;
}

答案 1 :(得分:0)

编辑:没关系,我以为是C#

您可以将data字符串拆分为多个字符串data.Split(' ')(将其分解为' ' - 字符),然后对于它返回的每个子字符串,您可以使用函数int.Parse(<substring here>)得到它的等价整数。