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

How to read multiple integers from string

本文关键字:整数 读取 字符串      更新时间:2023-10-16

输入:

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中的整数。如果我知道有IntAmount,如何将它们提取到数组N[i]中?我知道我可以用更基本的方式阅读输入,但这只是非常简化的输入。

以下函数将为您完成这项工作:

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;
}

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

您可以将data字符串拆分为多个字符串,例如data.Split(' ')(在' ' 个字符处拆分它),然后对于它返回的每个子字符串,您可以使用函数 int.Parse(<substring here>) 来获取它的整数等效项。