将文本文件读入行数组的正确方法是什么?我在Rosetta Stone上找到了以下内容:
string[] readLines(string filename) {
auto f = File(filename);
scope(exit) f.close();
string[] lines;
foreach (str; f.byLine) {
lines ~= str.idup;
}
return lines;
}
Run Code Online (Sandbox Code Playgroud)
但它看起来像每行调整一个数组,这是非常低效的.我可以通过标准的双倍方法跟踪读入的行数并调整数组的大小
int i = 0;
foreach (str; f.byLine) {
if (lines.length <= i + 1) {
lines.length = lines.length * 2 + 1;
}
lines[i] = str.idup;
i++;
}
lines.length = i;
Run Code Online (Sandbox Code Playgroud)
但这是足够的样板代码,我不得不想知道我是不是只是忽略标准库中已经为我做这件事的东西.
编辑:给予fwend的注释更多可见性:本文详细描述了数组分配器的工作原理,以及运行时有效处理追加的原因
我有一组GtkEntry小部件,其中一些是可编辑和可聚焦的,其中一些不是.我想知道它们当前有哪些(如果有的话)选择了文本,以便实现Edit-> Copy菜单项.有没有办法做到这一点,除了迭代所有小部件,直到gtk_editable_get_selection_bounds返回true?
我目前正在通过调用来回避问题,gtk_clipboard_get(GDK_SELECTION_PRIMARY)但是根据文档的说法,这不是可移植的(并且还将在当前显示中的任何地方选择文本,而不仅仅是从我的应用程序中选择).
我正在将遗留代码库从python 2.4迁移到python 2.6.这是作为推动删除"遗留"标记并为活动开发创建可维护,可扩展的基础的一部分,因此我有机会"做正确的事",包括重构使用新的2.6功能,如果这样做导致更清晰,更健壮的代码.(我已经对'with'声明感到欣喜:)).有关迁移的任何好建议吗?最佳实践,设计模式等?我主要是一个红宝石程序员; 我在使用这段代码时学到了一些python 2.4但对现代python设计原则一无所知,所以请随意提出你认为很明显的东西.
我想在C中实现一个基本的搜索/替换转换表; 也就是说,它将读取配置文件中的单词对列表,并查看在运行时接收的文本,将其找到的每个源单词替换为相应的目标单词.例如,如果我的用户输入文本是
"Hello world, how are you today?"
Run Code Online (Sandbox Code Playgroud)
我的配置文件是
world user
how why
Run Code Online (Sandbox Code Playgroud)
运行该函数将返回
"Hello user, why are you today?"
Run Code Online (Sandbox Code Playgroud)
我可以用适量的乏味(目前正在查看glib字符串实用程序函数,因为它们在那里)来做到这一点,但我认为这必须是某个库或其他库中的完全解决的问题.有什么指针吗?
(不,这不是功课,虽然我承认这个问题听起来很合理:)我正在写一个libpurple插件,因此纯C要求.)
在ruby中,我使用"crypt"方法加密字符串,例如:
str ="123"
strencrypt = str.crypt("aa")
我想从strencrypt解密并获取原始字符串.我怎样才能做到这一点?我曾尝试再次使用crypt方法:
str_ori = strencrypt.crypt("aa")
但它不能归还"123".
有人可以帮帮我吗?
我想创建一个TreeMap,使用图片填写treemap矩形.我可以假设所有图片都具有相同的宽度和高度(即宽高比).因此,我需要一个treemapping算法来创建具有给定比率的矩形,我是否能够将图片放在那里(如果需要,可能会缩放图片).
你能推荐一个吗?
我是D的新手,想要尝试gtkd.我在arch linux上,安装了dmd2-complete(dmd 2.0.56)和gtkd-svn(针对D2构建的gtkd)软件包.我还验证了D本身是否正常工作(编译并运行了一个基本writefln("hello world");程序).
现在我正试图让gtkd启动并运行,并且很难编译和链接示例中的基本helloworld程序.
import gtk.MainWindow;
import gtk.Label;
import gtk.Main;
void main(string[] args)
{
Main.init(args);
MainWindow win = new MainWindow("Hello World");
win.setDefaultSize(200, 100);
win.add(new Label("Hello World"));
win.showAll();
Main.run();
}
Run Code Online (Sandbox Code Playgroud)
具体来说,我需要将哪些选项传递给dmd才能将其链接起来?几乎所有我能找到的文档都完全跳过了这个.
该gtkd-svn软件包在/ usr/lib中安装了以下内容:
/usr/lib/libgtkd.a
/usr/lib/libgtkdgl.a
/usr/lib/libgtkdsv.a
Run Code Online (Sandbox Code Playgroud) I'm playing with the gtkd wrapper generator, and running into an std.conv exception for which I cannot manage to get any symbolic debug info at all. I've compiled with debug symbols:
$ dmd -gc -debug utils/HTODConvert.d utils/WrapperIF.d utils/funct.d utils/DefReader.d utils/GtkWrapper.d utils/HtmlStrip.d utils/IndentedStringBuilder.d utils/convparms.d utils/GtkDClass.d -ofgtkwrap
Run Code Online (Sandbox Code Playgroud)
but the backtrace is just a list of memory addresses:
std.conv.ConvException@/usr/include/d/std/conv.d(1779): Unexpected ' ' when converting from type string to type int
----------------
/home/martin/code/d/GtkD/wrap/gtkwrap() [0x805c4ab]
/home/martin/code/d/GtkD/wrap/gtkwrap() [0x805c57a]
/home/martin/code/d/GtkD/wrap/gtkwrap() [0x806d49e]
/home/martin/code/d/GtkD/wrap/gtkwrap() [0x806924e]
/home/martin/code/d/GtkD/wrap/gtkwrap() [0x8068c4a]
/home/martin/code/d/GtkD/wrap/gtkwrap() [0x8066aed] …Run Code Online (Sandbox Code Playgroud) 鉴于包含填字游戏的图像,我正在寻找算法
填字游戏本身可以被认为是规则的(即我对由某些程序生成并作为图像发布的填字游戏感兴趣,而不是扫描基于纸张的填字游戏),我希望程序在不需要任何输入的情况下运行除了图像位图.
我可以想到一些蛮力的多通道方法来做到这一点(基本上使用imagemagick的命中过滤器的变体,然后在图像上循环寻找剩余的点)但我希望实际的人能有更好的想法了解图像处理.
如何简化此代码?
if (x == 0) x = 1;
else if (x == 1) x = 0;
else if (x == 2) x = 3;
else if (x == 3) x = 2;
char *funcNames[]= {"VString","VChar","VArray","VData"};
for(int i=0;i<4;i++)
{
char* temp = funcNames[i];
int len = strlen(funcNames[i]);
for(int j = 0;j<len ;j++)
{
if(j!=0)
{
char arr = temp[j];
}
}
}
Run Code Online (Sandbox Code Playgroud)
在这里我想将"V"与char数组中的所有字符串分开...并在string的开头创建另一个没有"V"的char数组.我想要另一个char数组{String,char,array,data} ... i不能制作一个char数组....帮我解决我的问题......