在我的连续课程中
options.c_cflag |= ( CLOCAL | CREAD | CS8);
我想让|= ( CLOCAL | CREAD | CS8)
可编辑,因为我将从文本文件中读取此部分并“追加”到options.c_cflag
。
我尝试使用string
变量,但无法使其正常工作。
任何人都知道我该怎么做?
答案 0 :(得分:0)
你必须编写代码来实现这一点,因为基本上你是在尝试在运行时编译C代码。
您可以使用正则表达式引擎或简单字符串拆分来提取每个组件,然后将它们从字符串转换为符号(使用表格或类似:if(!strcmp(text,“CLOCAL”))v = CLOCAL;) 。
答案 1 :(得分:0)
OR'd标志为您提供实际数值,可以通过stringstream
读取并转换为该值。
template<typename T>
T flagValue(const std::string& flag_str)
{
T value;
std::stringstream ss;
ss << hex << flag_str;
ss >> value;
return value;
}
但是你需要知道OR标志的确切值,将其写在某处并为options.c_flag
分配flagValue的结果。
例如flagValue<unsigned int>("1a")
。