将配置文件中的变量分配给 C++ 中的 int16_t 变量

Assigning variables from configuration file to int16_t variables in c++

我已经使用stringstream 来解析配置文件。 C++ 整数变量在从文本 file.However 中分配值时工作正常,当我将从配置文件中读取的值分配给 C++ int16_t 变量时,它只是分配了一个不同的值。不知道怎么回事

这是我的代码:

void parseConfigurationFile(){
  //Variables
  int16_t int16_tValue;
  int firstIntegerValue;

  //File parsing code
  std::ifstream fin(configFileName);
  std::string line;
  std::istringstream sin;

  while (std::getline(fin, line)) 
  {
   sin.str(line.substr(line.find(":")+1));
   if (line.find("firstIntegerValue") != std::string::npos) {
       sin >> firstIntegerValue;
   }  
   else if (line.find("int16_tValue") != std::string::npos) {
       sin>>int16_tValue;
   }  
}

我的配置文件如下所示:

firstIntegerValue : 12
int16_tValue : 55555

这里可能出了什么问题?我想不通。

您输入的 55555 超出了 int16_t 的范围。由于 int16_t 是带符号的数量,因此为符号保留了一位,因此您的正范围较小。您溢出了一个带符号的 16 位整数。

您的值可能会被解释为负数。

您可能需要输入较小的值或使用 uint16_t