有什么方法可以在C++中读取文本并执行这样的代码命令吗?
Is any way to read text and execute that such a code command in C++?
我想从文本框中捕获彩色 rgb 数据,格式为 (r,g,b,a) 并创建:
QColor mColor = QColor(r,g,b,a);
有什么方法可以读取文本并执行这样的代码命令吗? 例如,如果我们假设execute
这样做:D:
mColor = execute ("QColor"+"(r,g,b,a)");
可能吗?
是的,有很多方法,我列出一些:if
语句:
std::string command;
if (command == "QColor")
{
m_color = //...;
}
使用std::map
typedef (void) (*Function_Pointer)(const std::string& arguments);
void ProcessQColorCommand(const std::string& arguments);
std::map<string, Function_Pointer> dispatcher;
dispatcher["QColor"] = ProcessQColorCommand;
//...
std::map<string, Function_Pointer>::iterator iter;
iter = dispatcher.find(command);
if (iter != dispatcher.end())
{
(*iter->second)(arguments);
}
你也可以制作一个字符串和函数指针的表并使用它。
您可能还想研究"词法"和"解析"。
让我重新措辞以确保我正确理解您的问题:
你会得到一个QString,它可以是用户输入,看起来像:
"mColor = execute (\"QColor\"+\"(r,g,b,a)\");">
您想通过分析此QString来构建QColor对象并检测正确的参数吗?所以本质上你需要一个函数,将QString作为输入并给出QColor作为输出?
在这种情况下,我认为您应该使用正则表达式(http://doc.qt.io/qt-5/qregularexpression.html)。这应该可以帮助您从QString中提取所需的信息,了解其结构应该是什么(并检测语法是否不正确)。
这完全取决于您尝试检测的内容的复杂性。对于非常简单的事情,你可以使用一个古老的"if"语句,正如托马斯·马修斯所建议的那样。
对于更复杂的内容,正则表达式是一个不错的选择。
然后,如果您需要能够解释更复杂的输入,则必须执行完整的解析器。但就你而言,我怀疑你需要走那么远。
相关文章:
- 需要将此代码更改为执行代码
- 当前不会命中断点。没有调试器目标代码类型的可执行代码与此文件关联
- 单步执行代码时重复上一行
- 如何使用介子在C++中执行代码覆盖?
- Visual Studio 2017,C++,在单步执行代码时指向错误的行
- 在 R 中执行C++代码
- 通过 dll 注入在主线程中执行代码
- 无法在 c++ 中循环后执行代码
- 执行C 代码时快速频繁的文件访问
- 执行 C++ 代码后出错
- 一个人如何从代表函数的字符串中执行运行时执行C 代码
- 是否可以在程序崩溃后执行代码?
- 第一次在 Linux 上执行 c++ 代码的时间非常慢
- 计算 JSON 中的条目数并相应地执行代码
- 将在 CATCH 块之后执行代码
- 分析执行C++代码的每一行所花费的确切时间
- 我在执行代码时不断得到"Bus Error"?
- c while()..执行代码行的条件
- 从并行线程在主 Maya 线程上执行代码
- 在调用GNUPLOT之后,如何继续执行C 代码