问题列表 - 第1773页

使用堆栈将成员变量重置为其原始值的一般方法?

我遇到了一个类实例函数,它需要临时更改一个类实例变量,然后在函数完成时恢复它.该函数在整个地方都有返回语句,并且在每次返回之前都有一个恢复语句.这对我来说似乎很混乱,更不用说在抛出异常时会感到害怕.

作为一种改进,我使用内部类定义提出了这种泛化.这是一个示例驱动程序(类恢复程序).

class Unwind {
private:
  bool b_active_; ///< the thing I want to be restored
  template<typename T>
  class restorer {
    T* ref_;
    T save_;
  public:
    restorer(T* perm) : ref_(perm), save_(*ref_) {};
    ~restorer() { *ref_ = save_; }
  };
public:
  Unwind() : b_active_(false) {};
  void a() { out("a in"); b(); out("a end"); }
  void b() {
    out("b in");
    {
      restorer<bool> trust_in_the_stack(&b_active_); // "restorer" created on the stack
      b_active_ = true; // change b_active_ only while "within" b()
      c();
      out("b inner …
Run Code Online (Sandbox Code Playgroud)

c++ callstack

2
推荐指数
1
解决办法
2139
查看次数

如何轻松地将c ++枚举映射到字符串

我在一些库头文件中有一堆枚举类型,我正在使用,我想有一种方法将枚举值转换为用户字符串 - 反之亦然.

RTTI不会为我做这件事,因为'用户字符串'需要比枚举更具可读性.

一个强力解决方案将是一堆像这样的功能,但我觉得这有点像C样.

enum MyEnum {VAL1, VAL2,VAL3};

String getStringFromEnum(MyEnum e)
{
  switch e
  {
  case VAL1: return "Value 1";
  case VAL2: return "Value 2";
  case VAL1: return "Value 3";
  default: throw Exception("Bad MyEnum");
  }
}
Run Code Online (Sandbox Code Playgroud)

我有一种直觉,认为使用模板有一个优雅的解决方案,但我还不能完全理解它.

更新:感谢您的建议 - 我应该明确说明枚举是在第三方库头中定义的,所以我不想更改它们的定义.

我现在的直觉是避免使用模板并执行以下操作:

char * MyGetValue(int v, char *tmp); // implementation is trivial

#define ENUM_MAP(type, strings) char * getStringValue(const type &T) \
 { \
 return MyGetValue((int)T, strings); \
 }

; enum eee {AA,BB,CC}; - exists in library header file 
; …
Run Code Online (Sandbox Code Playgroud)

c++ enums templates

113
推荐指数
8
解决办法
20万
查看次数

如何启用MySQL客户端自动重新连接MySQLdb?

我遇到了PHP的做法:

my_bool reconnect = 1;
mysql_options(&mysql, MYSQL_OPT_RECONNECT, &reconnect);
Run Code Online (Sandbox Code Playgroud)

但MySQLdb(python-mysql)没有运气.

任何人都可以提一个线索吗?谢谢.

python mysql

36
推荐指数
4
解决办法
5万
查看次数

你如何管理服务器的root密码

在我们的管理团队中,每个人都拥有所有客户端服 但是,如果其中一名团队成员不再与我们合作,我们该怎么办?他仍然拥有我们的密码,每次有人离开我们时我们都必须更改密码.

现在我们使用ssh密钥而不是密码,但是如果我们必须使用ssh以外的东西,这没有用.

linux security passwords ssh-keys

17
推荐指数
2
解决办法
3435
查看次数

F#声明的命名空间在c#项目中不可用或通过对象浏览器可见

F#声明的命名空间在c#项目中不可用或通过对象浏览器可见.

我已经构建了一个普通的F#库项目,但即使在我构建项目并将其引用到我的C#项目之后,我也无法访问所需的命名空间.

我也无法在对象浏览器中看到它,我收到一个错误,告诉我它还没有构建.我在9月发布的版本上运行有人可以指出我的错误吗?

F#版本1.9.6.0

(6)编辑:直接引用dll修复了我的问题,引用项目允许我编译,但是intellisence不起作用.直接引用dll时,intellisence可以完美地工作.


这是.fs文件中的代码

#light

namespace Soilsiu.Core 

module public Process =
    open System.Xml.Linq

    let private xname (tag:string) = XName.Get(tag)
    let private tagUrl (tag:XElement) = let attribute = tag.Attribute(xname "href")
                                        attribute.Value
    let Bookmarks(xmlFile:string) = 
        let xml = XDocument.Load(xmlFile)
        xml.Elements <| xname "A" |> Seq.map(tagUrl)

    let PrintBookmarks (xmlFile:string) =     
        let list = Bookmarks(xmlFile)
        list |> Seq.iter(fun u -> printfn "%s" u)
Run Code Online (Sandbox Code Playgroud)

(5)编辑:ReSharper 4.0可能成为问题吗?

(4)编辑:当我说对象浏览器无法读取生成的程序集时,我的意思是当我尝试在对象浏览器中打开程序集时,我得到一个错误,告诉我项目尚未构建.我再次使用反射器读取组件.

(3)编辑:反射器可以反汇编dll但对象浏览器无法读取它.

(2)编辑:我已将我的F#版本升级到1.9.6.2,但结果仍然相同

(1)编辑:我能够将dll反汇编为C#我得到:(这里似乎一切都很好)

namespace Soilsiu.Core
{
    [CompilationMapping(7)]
    public static class Crawler

    [CompilationMapping(7)]
    public static class Process …
Run Code Online (Sandbox Code Playgroud)

c# resharper f# interop

8
推荐指数
1
解决办法
2515
查看次数

如何列出JavaScript对象的属性?

假设我创建了一个对象:

var myObject =
        {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"};
Run Code Online (Sandbox Code Playgroud)

检索属性名称列表的最佳方法是什么?即我想最终得到一些变量'键',这样:

keys == ["ircEvent", "method", "regex"]
Run Code Online (Sandbox Code Playgroud)

javascript

807
推荐指数
15
解决办法
71万
查看次数

保存为csv时,为什么SQL Management Studio输出空分隔字符?

并且可以配置不发生?

我经常发现自己将查询结果保存为.csv并稍后在我的Unix机器上处理它.空格分离的字符使我必须过滤这些字符并且有点痛苦.

所以,这些是问题:

  • 为什么会这样?

编辑:

因为它默认以UTF-16输出.最简单的转换是:

iconv -f utf-16 -t utf-8 origFile.csv > newFile.csv
Run Code Online (Sandbox Code Playgroud)
  • 它可以以某种方式被禁用吗?怎么样?

这是一个由此生成的文件的hexdump片段.每个char后跟一个null char(00):

00000cf0  36 00 36 00 32 00 0d 00  0a 00 36 00 38 00 34 00  |6.6.2.....6.8.4.|
00000d00  30 00 36 00 32 00 31 00  36 00 0d 00 0a 00 36 00  |0.6.2.1.6.....6.|
00000d10  38 00 34 00 30 00 36 00  33 00 36 00 34 00 0d 00  |8.4.0.6.3.6.4...|
00000d20  0a 00 36 00 38 00 34 00 …
Run Code Online (Sandbox Code Playgroud)

sql-server ssms

1
推荐指数
1
解决办法
1190
查看次数

有选择地将css应用于gridview中的一行

我正在寻找一种方法来有选择地将CSS类应用于GridView基于数据绑定项的属性的各个行.

例如:

GridView的数据源是一个通用列表,SummaryItemsSummaryItem具有属性ShouldHighlight.当ShouldHighlight == true关联行的CSS应设置为highlighted

有任何想法吗?

asp.net gridview

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

在PHP中使用正则表达式替换空格

我对正则表达式很新.我需要替换一行多行文本中的空格.替换规则如下:

  • 使用不间断的空格(&nbsp;)替换行首的所有空格.
  • 用相同数量的非中断空格替换重复空格的任何实例(多个空格在一起).
  • 不在线路的单个空间保持不变.

我使用Regex Coach来构建匹配模式:

/( ){2,}|^( )/
Run Code Online (Sandbox Code Playgroud)

我们假设我有这个输入文本:

asdasd asdasd  asdas1
 asda234 4545    54
  34545 345  34534
34 345
Run Code Online (Sandbox Code Playgroud)

使用PHP正则表达式替换函数(如preg_replace()),我想得到这个输出:

asdasd asdasd&amp;nbsp;&amp;nbsp;asdas1
&amp;nbsp;asda234 4545&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;54
&amp;nbsp;&amp;nbsp;34545 345&amp;nbsp;&amp;nbsp;34534
34 345
Run Code Online (Sandbox Code Playgroud)

我很高兴使用正则表达式进行简单的文本替换,但是我无法解决如何在匹配中替换多次以获得我想要的输出.

php regex replace preg-replace

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

使用Javascript来使用Web服务

有没有办法使用JavaScript来使用Web服务?我正在寻找一种内置的方法,使用JavaScript框架不是一种选择.

javascript web-services

14
推荐指数
2
解决办法
4万
查看次数