我最近编写了一个控制台应用程序,我在很多方面都经历了很多痛苦,特别是在C#中,考虑到它的纯OO范例.我遇到的问题包括如何将选项传递给如何将问题返回到入口点类,以及许多其他问题.
我的问题是:你们中的任何人都会知道OO范例中的控制台应用程序的优秀设计,以便我可以从中学习吗?良好实施的代码特别受欢迎.
编辑:我不是在命令行API之后,而是在良好的设计原则之后,特别是我可以从中学到的良好实现.
编辑2:应用程序中有简单的用户交互,但它不是一个完整的CLI/REPL排序.可以将其视为TeX命令,或多或少.有趣的是,即使有好的理论浮动(与X无异,使用模式Y,你应该知道OO原则...... [你的计算机科学教授会非常自豪!]),没有真正的代码我可以采取看看这些概念在行动中.同样,在纯OO范例中,我应该在哪里看(代码!)以获得良好的命令行应用程序?
我想知道:有没有办法用C#编程创建HTML文件,就像使用XML一样?我是一个控制台应用程序,所以可能有一些选项不可用.基本上,我想做一些更聪明的事情,而不仅仅是建立一个大字符串.
可能的情况:
而不是写:
string html="<html><head>Blah</head><body>{0}</html>", myotherstring
Run Code Online (Sandbox Code Playgroud)
我想像XML一样工作
XmlTextWriter w = new XmlTextWriter(xml_file_path + xml_file_name,
System.Text.Encoding.UTF8);
w.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-8'");
// construct xml
XmlElement root = xmlDoc.CreateElement("element");
...
xmlDoc.Save(w);
w.Close();
Run Code Online (Sandbox Code Playgroud)
为天真的问题道歉.
在Java中,空字符串是40个字节.在Python中它是20个字节.C#中的空字符串对象有多大?我做不到sizeof,我不知道怎么回事.谢谢.
假设以下代码:
struct c {
char* name;
};
int main(int argc, char *argv[]) {
struct c c1;
c1.name = "Ana";
printf ("%s\n",c1.name);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我的第一反应是认为我需要在堆上分配一些空间,或者通过显式分配一些空间char name[] = "Anna",但我上面的例子是有用的.编译器只是将该字符串存储在数据段中并指向它吗?换句话说,就像做一个
struct c {
char* name = "Ana";
};
Run Code Online (Sandbox Code Playgroud)
谢谢.
你们当中有多少人实际使用纯XML数据库而不是RDBM?前者似乎正在获得动力,但我不明白其优势.有人在乎解释吗?
假设我在emacs中有这样的文本列表:
a
b
c
...
d
Run Code Online (Sandbox Code Playgroud)
有没有办法通过选择区域为Emacs中的项目分配数字?最终结果应如下所示:
1. a
2. b
3. c
j. ...
n. d
Run Code Online (Sandbox Code Playgroud)
谢谢.
假设我有一个随机生成的字符串s=t&^%JHGgfdteam*&HGEdfg,计算该字符串中英文单词数量的最佳方法是什么?(英语单词在某些词典文件中定义).显然蛮力不是一个好主意......后缀是否会起作用?二进制搜索?请注意,在这种情况下s,有两个词:"茶"和"团队".有任何想法吗?问候
当我编译(Xe)LaTeX文件时,emacs将输出写入LaTeX输出缓冲区并显示它.对于纯LaTeX,隐藏此缓冲区.对于emacs大师,我如何隐藏Latex编译缓冲区?谢谢.
我试图在C中找到2个小函数的相对优点.一个通过循环添加,一个通过显式变量添加.这些功能本身无关紧要,但我希望有人教我如何计算周期以便比较算法.因此f1将需要10个周期,而f2将需要8个.这就是我想要做的那种推理.此时没有性能测量(例如gprof实验),只是很好的旧指令计数.
有没有办法做到这一点?有工具吗?文档?我正在编写C,gcc在x86架构上进行编译.
我试图使用__atomic_load_n从gcc 原子内建网页,与编译
gcc -Wall -march=i686 -std=gnu99 ll.c -o ll
Run Code Online (Sandbox Code Playgroud)
但它告诉我它不能
警告:隐式声明函数'__atomic_load_n'
我认为这将是足以提供gcc与arch和march标志(并确保通过设置std=gnu99标志),但无济于事.事实上,即使我测试普通__GCC_VERSION__或__GNUC__宏似乎没有价值......但我有一个漂亮的vanilla gcc安装,Ubuntu中的安装.
我知道我做的事情很傻,但我无法弄清楚是什么.我有gcc(Ubuntu/Linaro 4.6.3-1ubuntu5)4.6.3
代码看起来像这样:它是一个永远不会被调用的函数,所以问题出在编译时.
type* func(type* p) {
type* q = __atomic_load_n (p, __ATOMIC_SEQ_CST);
}
Run Code Online (Sandbox Code Playgroud)