我需要将整个文件读入内存并将其放在C++中std::string.
如果我把它读成a char[],答案很简单:
std::ifstream t;
int length;
t.open("file.txt"); // open input file
t.seekg(0, std::ios::end); // go to the end
length = t.tellg(); // report location (this is the length)
t.seekg(0, std::ios::beg); // go back to the beginning
buffer = new char[length]; // allocate memory for a buffer of appropriate dimension
t.read(buffer, length); // read the whole file into the buffer
t.close(); // close file handle
// ... Do stuff with buffer here ...
Run Code Online (Sandbox Code Playgroud)
现在,我想做同样的事情,但是使用a std::string而不是a char[] …
我正在使用ConfigParser来读取脚本的运行时配置.
我希望能够灵活地不提供部分名称(有足够简单的脚本;它们不需要'部分').ConfigParser将抛出ConfigParser异常,并且不接受该文件.
如何使ConfigParser只检索ConfigParser没有部分名称的配置文件的元组?例如:
key1=val1
key2:val2
Run Code Online (Sandbox Code Playgroud)
我宁愿不写入配置文件.
我尝试遵循Python代码的样式指南(也称为PEP 8).因此,命名类的首选方法是使用CamelCase:
几乎无一例外,类名使用CapWords约定.内部使用的类别还有一个主要的下划线.
如果我的班级名字由两个首字母缩略词(适当的英语应该大写)形成,我怎样才能与PEP 8保持一致.例如,如果我的班级名称是'NASA JPL',你会说出什么名字?:
class NASAJPL(): # 1
class NASA_JPL(): # 2
class NasaJpl(): # 3
Run Code Online (Sandbox Code Playgroud)
我使用#1,但它看起来很奇怪; #3看起来很奇怪,#2似乎违反了PEP 8.
指向引用的指针,指针的引用和C++中指针的指针有什么区别?
一个人应该优先于另一个?
我有两对数据集,我需要使用Gnuplot进行绘图.
我想要将第一对绘制成红色,一个实体和一个虚线.第二对,我想绘制蓝色,一个实体和一个虚线.
我已set style line多次尝试过,但我无法得到这种确切的行为.我的最后一次尝试(附件)绘制了第一对红色(实心)和第二对蓝色(虚线).
任何帮助将不胜感激.
set style line 1 lt 1 lw 3 pt 3
set style line 2 lt 1 lw 3 pt 3
set style line 3 lt 3 lw 3 pt 3
set style line 4 lt 3 lw 3 pt 3
plot 'data1.dat' using 1:3 w l ls 1,\
'data1.dat' using 1:4 w l ls 2,\
'data2.dat' using 1:3 w l ls 3,\
'data2.dat' using 1:4 w l ls 4
Run Code Online (Sandbox Code Playgroud) 这似乎是一个问题似乎是一个骗局,但请耐心等待 - 我保证我已经阅读了相关的帖子(以及GOF书).
在我读完所有内容之后,我仍然没有清楚何时使用抽象工厂,工厂方法或构建器.我相信它会在我看到一个问题的简单例子之后陷入困境,这个问题最好由建筑商来处理,而使用抽象工厂显然是愚蠢的.
你能提供一个简单的例子,你可以清楚地使用一种模式而不是其他模式吗?
我理解,如果这个例子过于简单,可能归结为意见问题,但我希望如果有人可以,那个人就是这样.
谢谢.
language-agnostic design-patterns builder factory-method abstract-factory
以下代码允许您修改runtime.py运行时的内容.换句话说,您不必中断runner.py.
#runner.py
import time
import imp
def main():
while True:
mod = imp.load_source("runtime", "./runtime.py")
mod.function()
time.sleep(1)
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
在运行时导入的模块是:
# runtime.py
def function():
print("I am version one of runtime.py")
Run Code Online (Sandbox Code Playgroud)
这种原始机制允许您"如何交换"Python代码(la Erlang).还有更好的选择吗?
请注意,这只是一个学术问题,因为我没有必要做这样的事情.但是,我有兴趣了解有关Python运行时的更多信息.
编辑:
我创建了以下解决方案:一个Engine对象提供了一个模块中包含的函数的接口(在这种情况下,模块被调用engine.py).该Engine对象还生成一个线程,用于监视源文件中的更改,如果检测到更改,则会调用notify()引擎上的方法,该方法会重新加载源文件.
在我的实现中,更改检测基于每秒frequency检查文件的SHA1校验和的轮询,但是其他实现也是可能的.
在此示例中,检测到的每个更改都会记录到已调用hotswap.log校验和的文件中.
用于检测改变的其他机制可以是服务器或使用inotify中的Monitor线程.
import imp
import time
import hashlib
import threading
import logging
logger = logging.getLogger("")
class MonitorThread(threading.Thread):
def __init__(self, engine, frequency=1): …Run Code Online (Sandbox Code Playgroud) Python字典没有特定的顺序存储(映射没有顺序),例如
>>> myDict = {'first':'uno','second':'dos','third':'tres'}
myDict = {'first':'uno','second':'dos','third':'tres'}
>>> myDict
myDict
{'second': 'dos', 'third': 'tres', 'first': 'uno'}
Run Code Online (Sandbox Code Playgroud)
虽然可以从字典中检索已排序的列表或元组,但我想知道是否可以使字典按照它们传递给它的顺序存储项目,在前面的示例中,这将意味着将内部排序作为{'first':'uno','second':'dos','third':'tres'}和没有区别.
我需要这个,因为我正在使用字典存储值,因为我从配置文件中读取它们; 一旦读取和处理(值被更改),它们必须以与读取时相同的顺序写入新配置文件(此顺序不是字母顺序也不是数字顺序).
有什么想法吗?
请注意,我不是在寻找检索订单的次要方法(如列表),而是寻找使字典本身有序的方法(因为它将在即将推出的Python版本中).