我需要搜索传入的非常长的文本片段以查找给定字符串的出现次数.字符串对于整个会话是不变的并且不是很多(~10).另外的简化是没有任何字符串包含在任何其他字符串中.
我目前正在使用boost正则表达式匹配str1 | str2 | ....这项任务的执行很重要,所以我想知道我是否可以改进它.并不是说我可以比推特人更好地编程,但也许专用实现比普通实现更有效.
由于字符串长时间保持不变,我可以预先建立一个数据结构,如状态转换表.
例如,如果字符串是abcx,bcy而且cz,到目前为止abc,我已经阅读过,那么我应该处于合并状态you're either 3 chars into string 1, 2 chars into string 2 or 1 char into string 1.然后阅读x下一个会将我移动到string 1 matched状态等,除了xyz将移动到初始状态之外的任何其他字符,我将不需要缩回b.
任何想法或参考表示赞赏.
我在我的家庭目录()下安装了eclipse(好吧,解压缩)~/eclipse并且它工作正常(好吧,就像你可以说它关于日食一样).今天它完全疯了,一直抛出"堆栈溢出"错误.(顺便说一句,你知道这些天google完全不可能出现"堆栈溢出"问题吗?猜猜你得到了什么...... :)
所以我下载了最新版本并在/opt/eclipse此时安装了它.当我尝试从我的用户终端运行它时,我遇到了大量错误:
(eclipse:28336):GLib-GObject-WARNING**:无效(NULL)指针实例
(eclipse:28336):GLib-GObject-CRITICAL**:g_signal_connect_data:断言`G_TYPE_CHECK_INSTANCE(instance)'失败
(eclipse:28336):Gtk-CRITICAL**:gtk_settings_get_for_screen:断言`GDK_IS_SCREEN(屏幕)'失败
(日食:28336):Gtk-WARNING**:未设置GtkWindow的屏幕; 在使用窗口之前,您必须始终为GtkWindow设置屏幕
等等
从root终端运行它工作正常(实际上比以前的版本启动快得多).
这样做没有帮助:
xhost +localhost
xhost +<my-user>
Run Code Online (Sandbox Code Playgroud)
这两个都没有:
chroot -R root:root /opt/eclipse
chroot -R my-group:my-user /opt/eclipse
Run Code Online (Sandbox Code Playgroud)
有什么建议如何解决这个问题?
编辑:奇怪的是,再打开它,这次在我的家里,dir也没有帮助.表明放弃并没有多大帮助......
我的理解是在服务器上编译一个预准备语句,从而节省了重复解析,优化等的开销.显然,我应该总是更喜欢使用预处理语句来运行多次查询.
这种方法有任何缺点吗?
我正在使用从C++到mysql的odbc(libodbc ++).
我们在代码中有一个频繁重复的行,用于检查函数的返回状态,如果是故障,则立即返回状态.我想为这个定义一个宏:
#define RETURN_IF_FAILED(x) { int stat = (x); if (FAILED(stat)) return stat; }
Run Code Online (Sandbox Code Playgroud)
局部变量是因为参数x可以是函数调用.
我知道有一些奇怪的使用宏的工件,我不是很熟练,我想问你是否看到这个宏有任何问题.谢谢.
(并且,请不要建议使用例外 - 我自己讨厌这种风格,但这就是它在这里完成的方式)
是否可以使用sql语句从存储过程连接到mysql服务器的远程实例,以进行选择和插入访问?
理想情况下,它会像(伪代码):
connect to remotedb@remotehost
select field1 from remotedb.table1 where ...
Run Code Online (Sandbox Code Playgroud)
我想我可以在C/C++中开发一个用户定义的函数,它通过ODBC来实现.不过,如果可能的话,我更喜欢原生语法.谢谢!
如果文件不存在,我需要创建一个文件,试图创建此文件的另一个进程将失败.我甚至需要在创建过程完成向其写入实际数据之前将文件视为"已创建".
我读到了O_EXCL标志open(),所以似乎解决方案存在,但我有几个问题:
open()以便将其视为已创建,然后重新打开以进行写入?我有一个std::string包含二进制数据的对象,我需要将其写入文件.可能ofstream f("name"); f << s;有问题吗?我需要完全按照原来的方式读回数据.
我当然可以使用fwrite(s.c_str(), s.size(), 1, filep),这两种方法都有任何优点/缺点吗?
我需要对用 C++ 编写的软件组件进行一些修改。我幻想着生成一些代码映射,这将显示类之间的关系并引导我完成方法的流程/调用图。有这个工具吗?
几年前,我使用 Rational Rose 建模工具,它具有对代码进行逆向工程并为其构建类图的功能。然而,对于此类项目探索重要的是一些动态信息,如序列图(理想情况下)或调用图。更不用说 Rose 对于这样的一项临时任务来说太大了,实际上我不知道它是否仍然存在。
因此,自2.6以来os.statvfs()已弃用,shutil.disk_usage()尚不存在(3中可用).还剩什么?
编辑:我不想在这一点上添加一个新的库,所以psutil也是.
我将df在子进程中运行并解析输出,有更好的方法吗?
看看下面的简单代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s("1234567890");
string::iterator i1 = s.begin();
string::iterator i2 = s.begin();
string s1, s2;
s1.append(i1, ++i1);
s2.append(++i2, s.end());
cout << s1 << endl;
cout << s2 << endl;
}
Run Code Online (Sandbox Code Playgroud)
您对输出的期望是什么?
你会像我一样期望它是:
1
234567890
Run Code Online (Sandbox Code Playgroud)
错误!它是:
234567890
Run Code Online (Sandbox Code Playgroud)
即第一个字符串为空.
前缀增量运算符的接缝在迭代器中存在问题.还是我错过了什么?
c++ ×6
linux ×3
mysql ×2
algorithm ×1
atomicity ×1
binary ×1
createfile ×1
database ×1
diskspace ×1
eclipse ×1
eclipse-cdt ×1
filesystems ×1
gcc ×1
iostream ×1
macros ×1
odbc ×1
oop ×1
python ×1
python-2.7 ×1
sql ×1
stl ×1
text-search ×1