重复:在C++中有一个使用模式匹配(使用正则表达式)的函数?
我不确定在哪里使用它...是否有任何解析器类型的函数将一些正则表达式作为参数或什么?我刚刚发现我的编辑器会突出显示一行/作为C/C++语法的"正则表达式",我觉得这很奇怪......
好吧,我猜C在本质上是痛苦的 - 只是,这部分,特别痛苦.
另外,没有一个真正的原因我只用C语写,除了,这是我想写的语言,并且现在精通.我知道从C转向C++是不好的,但无论如何.
有没有人知道一个解决方案,我在程序中创建多个窗口的问题?
好吧,我正在连接一个C DLL和一个VB6前端,但是 - 尝试来回传递字符串变得很难看,而且每当我添加一个新函数时,似乎其他一切都会破坏.所以,我想,为什么我只是为了与一种甚至不再支持的语言接口而让自己完成所有这些痛苦?为什么不把这种痛苦用于更好地使用并学习在C中构建前端?
好吧,我开始了,但我不得不问:有一个简单的方法吗?WndProc这个巨大的switch语句让我眼前一亮,反对我学到的关于干净代码的一切(很像12参数CreateWindowEx()或14参数CreateFont()).
我意识到我可以在某种程度上重构所有这些 - 如果我使用C++,我可以将窗口及其组件放入类中,并以更自然的方式访问它们,我想...
无论如何,我设法构建了一个名为"主窗口!"的大表格,带有"弹出消息!" 按钮,哪个工作正常 - 而且它根本不复杂.然后是"改变那个文字!" 用于更改编辑控件中文本的按钮.为了实现这一点,WndProc在WM_COMMAND从按钮接收消息时必须知道编辑控件.我不能将编辑控件的hWnd传递给它,因为我不是那个调用它的人,你不能只是向WndProc添加参数.所以我不得不将编辑控件放在全局范围内.
我想将按钮的字体改为13pt Tahoma - 简单,对吗?当然 - 但是我不能得到比WM_PARENTNOTIFY消息更远的东西......经过仔细阅读MSDN后,我发现有些信息在wParam的高位字中,有些信息在低位字中.所以,我不得不这样写:if(wParam==(WM_CREATE | (POPUP_COMMAND<<16))){
使控件全球化?巨大的转换声明?12和14参数函数调用?简单通知的位移?我仍然无法弄清楚如何使一个窗口(窗口窗口,而不是控制窗口)出现更多 - 这很痛苦......
请告诉我有更好的方法!
顺便提一下,如何制作多个窗口?如果我只在同一个类上注册两个类或CreateWindowEx两次(对于两个句柄),则只会出现第一个类.我尝试使用dwStyle参数一点,但无济于事.任何人?
我正在玩调用堆栈,尝试更改函数的返回地址等,并在C中编写此程序:
#include<stdio.h>
void trace(int);
void func3(int);
void func2(int);
void func1(int);
int main(){
int a = 0xAAAA1111;
func1(0xFCFCFC01);
return 0;
}
void func1(int a){
int loc = 0xBBBB1111;
func2(0xFCFCFC02);
}
void func2(int a){
int loc1 = 0xCCCC1111;
int loc2 = 0xCCCC2222;
func3(0xFCFCFC03);
}
void func3(int a){
int loc1 = 0xDDDD1111;
int loc2 = 0xDDDD2222;
int loc3 = 0xDDDD3333;
trace(0xFCFCFC04);
}
void trace(int a){
int loc = 0xEEEE1111;
int *ptr = &loc;
do {
printf("0x%08X : %08X\n", ptr, *ptr, *ptr);
} while(*(ptr++) …Run Code Online (Sandbox Code Playgroud) 我将获得一些任意大小的服务器空间,并获得ssh访问它以建立一个subversion存储库.
但是,我不知道要求多少空间.现在,它将托管我的cms项目,以便我的同事也可以为代码做出贡献.但如果它到达任何地方,我们希望扩展系统,可能将许多项目放入回购.
它将包含php和其他基于Web的代码,以及几个图像.没有过多的空间,有多少空间?20MB?200MB?
我有一个python类,我需要添加任意数量的任意长列表.我需要添加的列表名称也是任意的.例如,在PHP中,我会这样做:
class MyClass {
}
$c = new MyClass();
$n = "hello"
$c.$n = array(1, 2, 3);
Run Code Online (Sandbox Code Playgroud)
我如何在Python中执行此操作?
我也想知道这是否合理.另一种方法是在类中创建列表的字典,但由于列表的数量和大小是任意的,我担心可能会受到性能影响.
如果你想知道我想要完成什么,我正在写一个超轻量级的脚本解释器.解释器遍历人工编写的列表并创建某种字节码.每个函数的字节代码将存储为以"app"类中的函数命名的列表.我很想知道如何做到这一点的任何其他建议.
我正在使用sqlite3作为基础为我的应用程序构建数据库库.我想像这样构造它:
db/
__init__.py
users.py
blah.py
etc.py
所以我会用Python做到这一点:
import db
db.users.create('username', 'password')
Run Code Online (Sandbox Code Playgroud)
我正在分析如何处理数据库连接的分析瘫痪(哦不!).我真的不想在这些模块中使用类,能够创建一堆可以以相同方式操作同一数据库的"用户"对象似乎并不合适 - 因此继承连接是不走.
我是否应该与所有模块使用的数据库建立一个全局连接,然后将其放在每个模块中:
#users.py
from db_stuff import connection
Run Code Online (Sandbox Code Playgroud)
或者我应该为每个模块创建一个新连接并保持活着吗?
或者我应该为每个交易创建一个新连接?
这些数据库连接应该如何使用?对于游标对象也是如此:我是否为每个事务创建一个新游标?为每个数据库连接只创建一个?
我试图在现有网站上工作,我发现一个错误,但我不知道为什么它是一个bug或如何解决它.
该网站基本上列出了一些城市租赁的商业物业.有一个类从数据库中抓取列表并从每个列表中创建一个对象.在每个对象中是与该属性相关联的图像阵列.
当用户编辑列表,他们得到它具有图像列表编辑页面,而"删除"复选框旁边.该复选框都具有相同的名字,这样当他们提交回服务器,应用程序获取图像的阵列被删除.
应该发生的是,应用程序具有此开/关值数组(其中on = delete),并且数组中每个值的索引对应于列表对象中的图像的索引 - 当其中一个如果值为"on",则从文件系统中删除与该"on"值对应的images阵列中的文件名,并从数据库中删除该图像.
但是,当提交表单时,应用程序将获得仅包含已选中复选框的0索引数组.因此,如果我设置三个任意图像进行删除,应用程序将获得
Array {
[0] => "on",
[1] => "on",
[2] => "on"
}
这显然不起作用,无论设置哪个复选框,列表中的前3个图像都将被删除.
我怎样才能解决这个问题?我想避免命名每个复选框(delete_1,delete_2,delete_3等)作为系统已经建有具有相同名称的所有复选框工作.有没有办法可以强制所有复选框都以"开"或"关"提交?
我将开始使用DirectX SDK在非托管C++中编写3D游戏.这将涉及大量的物理和数学,虽然我无法预测它会有多复杂(例如,我不知道我是否会将它并行化).我想,由于F#非常棒的测量单位功能,以及它功能齐全,因此可以很好地并行化,我可以编写一个F#库来进行游戏的数学密集型计算.但:
pureC++中有一个关键字可能不允许副作用或某些东西?) - 我想我可以如果我非常小心(我知道我只会使用公制单位),没有计量单位.值得吗?混合托管和非托管代码是一种常见的做法吗?游戏怎么样?它会成为瓶颈吗?它会让我的抽奖代码变得恐怖而复杂吗?如果你打开一个VC++项目并看到这种情况发生了 - 你的脸会是什么样的(:) :( D:等等)
我在AutoMapper的GitHub上看过这个例子,但是这个例子假设只有一种方法可以映射InnerSource:
Mapper.CreateMap<OuterSource, OuterDest>();
Mapper.CreateMap<InnerSource, InnerDest>();
Mapper.AssertConfigurationIsValid();
var source = new OuterSource
{
Value = 5,
Inner = new InnerSource {OtherValue = 15}
};
var dest = Mapper.Map<OuterSource, OuterDest>(source);
Run Code Online (Sandbox Code Playgroud)
在我的项目中,我将序列化使用EF创建的具有循环引用的对象.原因是我需要从不同的方向来看待物体.例如,如果我要求用户列表,我想看到他们关联的项目.如果我要求一个项目,我想看到与该项目相关的用户.
这些循环引用可以得到相当深,如User.Role.Project.TaskTime.User,User.TaskTime.Project.Task.TaskType.VisibleToRole.Role.User等.
所以我需要嵌套映射相当深,它的完成方式取决于第一个映射是什么.
目前我在做:
Mapper.CreateMap<User, UserFull>()
.ForMember("TaskTimes", opt => opt.MapFrom(src => Mapper.Map<ICollection<TaskTime>, UserTaskTime>(src.TaskTimes)));
Mapper.CreateMap<TaskTime, UserTaskTime>()
.ForMember("Task", opt => opt.MapFrom(src => Mapper.Map<Task, UserTaskTimeTask>(src.Task)));
//...
Run Code Online (Sandbox Code Playgroud)
该代码段的视图模型如下所示:
public class UserFull
{
public string Email { get; set; }
public string Name { get; set; }
public virtual …Run Code Online (Sandbox Code Playgroud) 我正在编写一个LALR解析器生成器作为一个宠物项目。
我正在使用紫色的龙书来帮助我进行设计,并且从中收集的信息是解析器中有四种错误恢复方法:
其中两个需要修改输入字符串(我想避免),另外两个需要编译器设计人员预见错误并根据他们对语言的了解来设计错误恢复。但是解析器生成器也具有关于语言的知识,因此我很好奇是否有更好的方法可以从解析错误中恢复而无需预先选择同步标记或用错误产生物填充语法。
解析器不能只选择同步令牌,而不能仅选择当前生产可以减少为同步令牌的所有非终结符后面的符号?我还没有真正弄清楚它的效果如何-我将解析器形象化地放在了一系列正在进行中的产品中,但是,这当然不是自底向上解析器的工作方式。试图找到可行状态会产生太多无关的错误吗?它会尝试以无效状态恢复解析器吗?有没有一种很好的方法来用有效的错误操作预填充解析器表,以便实际的解析程序不必在遇到错误时就知道下一步应该去哪里?