我正在研究一个计算器,它需要字符串表达式并对它们进行评估.我有一个函数,使用Regex在表达式中搜索数学函数,检索参数,查找函数名称并对其进行求值.我遇到的问题是,如果我知道将会有多少参数,我只能做到这一点,我无法正确使用正则表达式.如果我只是通过字符拆分(和)字符的内容,,那么我不能在该参数中进行其他函数调用.
这是函数匹配模式: \b([a-z][a-z0-9_]*)\((..*)\)\b
它只适用于一个参数,我可以为每个参数创建一个组,不包括嵌套函数内的参数吗?例如,它将匹配:func1(2 * 7, func2(3, 5))并为:2 * 7和创建捕获组func2(3, 5)
这里我用来评估表达式的函数:
/// <summary>
/// Attempts to evaluate and store the result of the given mathematical expression.
/// </summary>
public static bool Evaluate(string expr, ref double result)
{
expr = expr.ToLower();
try
{
// Matches for result identifiers, constants/variables objects, and functions.
MatchCollection results = Calculator.PatternResult.Matches(expr);
MatchCollection objs = Calculator.PatternObjId.Matches(expr);
MatchCollection funcs = Calculator.PatternFunc.Matches(expr);
// Parse the expression for …Run Code Online (Sandbox Code Playgroud) 我知道,我必须用一个ElementHost显示在WinForm的WPF控件,但由于WPF控件是第三方软件,而且只配备了一个XML文件和DLL文件.
控件是AvalonEdit,我将两个ICSharpCode.AvalonEdit.xml和ICSharpCode.AvalonEdit.dll文件添加到我的项目中,然后我去了Project -> Add Reference并添加了DLL作为参考.现在我可以ICSharpCode在我的代码中访问命名空间,所有的类和方法都暴露出来,但从这一点来说,我不确定如何在我的WinForm中实际使用该控件.
我期待WPF控件出现在解决方案资源管理器中,但事实并非如此.我尝试将ElementHost控件添加到我的WinForm,但是当我尝试选择托管内容时,没有控件出现,所以它不知道我的WPF控件.如何在WinForm中使用AvalonEdit WPF控件?
我对解析XML文件缺乏经验,而且我将线图数据保存到xml文件中,所以我做了一些研究.根据这篇文章,在阅读XML文件的所有方法中,DataSet最快.我使用它是有道理的,DataSet因为可能有大量的数据.这是我的图形文档的外观:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<BreezyCalc>
<Graph Version="3.0" Mode="static">
<Range>
<X Min="-20" Max="20" />
<Y Min="-20" Max="20" />
</Range>
<Lines>
<Line Name="MyLine1" R="0" G="255" B="0">
<Point X="-17" Y="9" />
<Point X="7" Y="-5" />
<Point X="10" Y="4" />
<Point X="-6" Y="2" />
</Line>
<Line Name="MyLine2" R="255" G="0" B="0">
<Point X="-7" Y="3" />
<Point X="8" Y="-1" />
<Point X="-4" Y="-4" />
<Point X="-1" Y="6" />
</Line>
</Lines>
</Graph>
</BreezyCalc>
Run Code Online (Sandbox Code Playgroud)
由于这些行中可能存在大量的点,因此我需要尽可能快地以尽可能少的资源获取数据.如果有更快的方法DataSet,请赐教.否则,有人可以告诉我如何使用DataSet我的XML解析器获取我的图形数据吗?
我知道在头文件中声明模板类方法并在源文件中定义它的语法如下:
myclass.h
template <typename T>
class MyClass {
public:
void method(T input);
private:
T privVar;
};
Run Code Online (Sandbox Code Playgroud)
myclass.cpp
template <typename T>
void MyClass<T>::method(T input) {
privVar = input;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果该方法也是模板怎么办?我正在为basic_string类添加方法,我想知道如何编写函数的实现.
MyString.h
template <class _Elem = TCHAR,
class _Traits = std::char_traits<_Elem>,
class _Ax = std::allocator<_Elem>>
class String
: public std::basic_string<_Elem, _Traits, _Ax> {
private:
// Types for the conversion operators.
typedef _Elem* _StrTy;
typedef const _Elem* _ConstStrTy;
//...
public:
// Conversion operators so 'String' can easily be
// assigned to …Run Code Online (Sandbox Code Playgroud) 我已经下载并安装了使用MVC 4和VS2010的所有先决条件.VS2010 SP1更新,VS2010的ASP.NET MVC 4,VS2010的SSDT和LocalDB.当我在VS2010中创建一个新网站时,应该有一个"ASP.NET MVC 4 Web应用程序"模板,但没有.如何获取模板以便在Visual Studio 2010中启动新的MVC 4网站?
当一个类重载时operator+,是否应该将其声明为const,因为它不对该对象进行任何赋值?此外,我知道operator=并operator+=返回引用,因为已进行分配.但是,怎么样operator+?当我实现它时,我应该复制当前对象,将给定的对象添加到该对象中,并返回该值吗?
这是我有的:
class Point
{
public:
int x, int y;
Point& operator += (const Point& other) {
X += other.x;
Y += other.y;
return *this;
}
// The above seems pretty straightforward to me, but what about this?:
Point operator + (const Point& other) const { // Should this be const?
Point copy;
copy.x = x + other.x;
copy.y = y + other.y;
return copy;
}
};
Run Code Online (Sandbox Code Playgroud)
这是正确的实施operator+吗?或者有什么我忽略的可能会导致麻烦或不必要的/未定义的行为?
所以,我有一个使用纯WinAPI的基于对话框的应用程序.有一个主对话框,然后是多个其他对话框,它们是工具窗口.这些工具窗口用于自由浮动,用户可以拖动它们,隐藏它们并显示它们,但它们没有任务栏条目.这就是我的意图,但问题是,当我从主窗口切换到另一个应用程序时,然后单击主窗口的任务栏条目,主窗口将显示,但工具窗口不会.它们隐藏在主窗口后面,有时隐藏在其他应用程序的窗口之后,在移动所有最顶层窗口并追踪工具窗口之前,您无法使用它们.
因此,我正在努力解决这个问题,当用户恢复窗口的最小化时,我想通过所有工具窗口进行枚举并将它们带到前面,也许是通过调用SetActiveWindow().
但是当窗口恢复时会发送什么消息?我在想WM_SHOW或WM_RESTORE,但它们不存在.
另一个问题,如果你回答这个问题,第一个问题是无关紧要的,因为我将不再需要使用该解决方法:是否有更好的方法将所有工具窗口置于前面?
我正在使用WebMatrix,我创建了一个数据库并放置了一个包含几行数据的表.我可以连接到它并获取数据WebGrid,但它只提供了一种使用表输出数据的方法.
这是我的'shows.cshtml'代码:
@{
var db = Database.Open("TVPort");
var shows_data = db.Query("SELECT * FROM shows");
var shows_grid = new WebGrid(source: shows_data);
}
Run Code Online (Sandbox Code Playgroud)
我希望能够做的是枚举查询返回的每一行,并使用每列的值执行任何我想要的操作.但是WebGrid唯一允许您在表格中输出数据.我今天刚开始使用WebMatrix和Razor语法.
另外(在这里提出问题,并不认为它足以成为它自己的问题),有没有办法为我的'shows.cshtml'页面制作一个C#代码文件?在Visual Web Developer 2010中,每个页面都有一个'page.aspx'文件和一个'page.aspx.cs',其中'page.aspx.cs'文件允许您在页面中使用自定义函数,或执行任务页面加载时 在WebMatrix中使用CSHTML是否有类似的行为?或者是所有代码都应该与实际页面内联?
我想用c ++制作VST插件.我读到JUCE库比使用Steinberg SDK更好.我的问题是,当我在谷歌教程中它只涉及与应用程序开发有关的通用主题,而不是该库最初设计的专用音频插件接口.
我希望你们能指点我的教程,包括使用JUCE框架制作vst插件(可能是一个简单的效果,如低通滤波器).或者,如果有人能告诉我有关在visual studio(2008)中开发VST插件的更好或更简单的方法,并链接到将帮助我入门的资源.
我正在尝试创建一个Console类.我想换行cin,并cout在课堂上和重载<<和>>运营商.所以我可以这样使用这个类:
// Output
Console << "Call cout from Console" << endl;
// Input
string str;
Console >> str; // Call cin
Run Code Online (Sandbox Code Playgroud)
我最好的猜测是:
class Console {
//...
public:
ostream& operator<< (ostream& os)
{
cout << os;
return &cout;
}
//...
};
Run Code Online (Sandbox Code Playgroud)
但我知道这是错的,我怎么能重载操作符来使用Console类作为cin和cout?