小编Esc*_*alo的帖子

将整个ASCII文件读入C++ std :: string

我需要将整个文件读入内存并将其放在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[] …

c++ string file-io caching standard-library

559
推荐指数
5
解决办法
49万
查看次数

使用Python的ConfigParser读取没有部分名称的文件

我正在使用ConfigParser来读取脚本的运行时配置.

我希望能够灵活地不提供部分名称(有足够简单的脚本;它们不需要'部分').ConfigParser将抛出ConfigParser异常,并且不接受该文件.

如何使ConfigParser只检索ConfigParser没有部分名称的配置文件的元组?例如:

key1=val1
key2:val2
Run Code Online (Sandbox Code Playgroud)

我宁愿不写入配置文件.

python parsing configuration-files

81
推荐指数
7
解决办法
8万
查看次数

在什么情况下我会使用元组作为字典键?

我正在研究列表和元组之间区别(在Python中).一个显而易见的是元组是不可变的(初始赋值后不能更改值),而列表是可变的.

文章中的一句话让我:

只有不可变元素可以用作字典键,因此只能使用元组而不是列表作为键.

我很难想到我想使用元组作为字典键的情况.您能提供一个示例问题,这将是一个自然,高效,优雅或明显的解决方案吗?

编辑:

谢谢你的例子.到目前为止,我认为一个非常重要的应用是缓存函数值.

python dictionary tuples list

65
推荐指数
6
解决办法
6万
查看次数

PEP 8如何命名一个名为首字母缩写词的类?

我尝试遵循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.

python coding-style naming-conventions

48
推荐指数
6
解决办法
1万
查看次数

指向引用的指针和指针引用之间的区别

指向引用的指针,指针的引用和C++中指针的指针有什么区别?

一个人应该优先于另一个?

c++ memory pointers reference

42
推荐指数
4
解决办法
3万
查看次数

在Gnuplot 4.0中选择线型和颜色

我有两对数据集,我需要使用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)

gnuplot

36
推荐指数
6
解决办法
22万
查看次数

抽象工厂,工厂方法,生成器

这似乎是一个问题似乎是一个骗局,但请耐心等待 - 我保证我已经阅读了相关的帖子(以及GOF书).

在我读完所有内容之后,我仍然没有清楚何时使用抽象工厂,工厂方法或构建器.我相信它会在我看到一个问题的简单例子之后陷入困境,这个问题最好由建筑商来处理,而使用抽象工厂显然是愚蠢的.

你能提供一个简单的例子,你可以清楚地使用一种模式而不是其他模式吗?

我理解,如果这个例子过于简单,可能归结为意见问题,但我希望如果有人可以,那个人就是这样.

谢谢.

language-agnostic design-patterns builder factory-method abstract-factory

32
推荐指数
2
解决办法
6446
查看次数

C/C++中自给自足的头文件

我最近发布了一个问题,询问什么行为将构成C++禅宗.我收到了很好的答案,但我无法理解一个建议:

  • 使头文件自给自足

你如何确保你的头文件是自给自足的

任何其他与C/C++中头文件的设计和实现相关的建议或最佳实践都将受到欢迎.

编辑:我发现这个问题涉及我的"最佳实践"部分.

c++ header-files

24
推荐指数
4
解决办法
1万
查看次数

热插拔Python运行程序

以下代码允许您修改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 hotswap

18
推荐指数
2
解决办法
7814
查看次数

按推送顺序存储Python字典条目

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版本中).

python sorting mapping dictionary

17
推荐指数
1
解决办法
3万
查看次数