将配置文件中的变量分配给 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
。
我已经使用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
。