小编Fra*_*ank的帖子

如何写一个类型特征`is_container`或`is_vector`?

是否可以写一个类型的特点,它的值是所有常见的STL结构真(例如vector,set,map,...)?

首先,我想编写一个类型特征,对于a vector和false 都是如此.我试过这个,但它没有编译:

template<class T, typename Enable = void>
struct is_vector {
  static bool const value = false;
};

template<class T, class U>
struct is_vector<T, typename boost::enable_if<boost::is_same<T, std::vector<U> > >::type> {
  static bool const value = true;
};
Run Code Online (Sandbox Code Playgroud)

错误消息是template parameters not used in partial specialization: U.

c++ templates sfinae enable-if

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

如何解码HTML实体?

这是一个快速的Perl问题:

我怎么能转换HTML特殊字符,如&uuml;&#039;正常的ASCII文本?

我从这样的事情开始:

s/\&#(\d+);/chr($1)/eg;
Run Code Online (Sandbox Code Playgroud)

并且可以为所有HTML字符编写它,但是这样的某些功能可能已经存在了?

请注意,我不需要完整的HTML->文本转换器.我已经使用了解析HTML HTML::Parser.我只需要用我正在获得的特殊字符转换文本.

html perl ascii special-characters

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

如何用Python中的ascii字符替换unicode字符(给出perl脚本)?

我正在尝试学习python,无法弄清楚如何将以下perl脚本转换为python:

#!/usr/bin/perl -w                     

use open qw(:std :utf8);

while(<>) {
  s/\x{00E4}/ae/;
  s/\x{00F6}/oe/;
  s/\x{00FC}/ue/;
  print;
}
Run Code Online (Sandbox Code Playgroud)

该脚本只是将unicode元音变换为替代的ascii输出.(所以完整的输出是ascii.)我将不胜感激任何提示.谢谢!

python unicode perl diacritics

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

如何在提交之前看到'git svn dcommit'的变化?

有了svn-git,我怎么能看到即将发生的事情git svn dcommit

以下是我运行的命令:

git svn  clone file:///svn/test1 test1-git
cd test1-git
echo "first line" > test1.txt 
git add test1.txt 
git commit 
Run Code Online (Sandbox Code Playgroud)

现在它致力于git存储库 - 很好.但是在我运行之前,我git svn dcommit希望看到包含将提交给SVN存储库的更改的差异.

svn git git-svn

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

Unicode字符串的跨平台迭代(使用ICU计算字母)

我想迭代Unicode字符串的每个字符,处理每个代理对并将字符序列组合为一个单元(一个字形).

文本"नमस्ते"由代码点组成:U+0928, U+092E, U+0938, U+094D, U+0924, U+0947其中,U+0938并且U+0947组合标记.

static void Main(string[] args)
{
    const string s = "??????";

    Console.WriteLine(s.Length); // Ouptuts "6"

    var l = 0;
    var e = System.Globalization.StringInfo.GetTextElementEnumerator(s);
    while(e.MoveNext()) l++;
    Console.WriteLine(l); // Outputs "4"
}
Run Code Online (Sandbox Code Playgroud)

所以我们在.NET中有它.我们也有Win32的CharNextW()

#include <Windows.h>
#include <iostream>
#include <string>

int main()
{
    const wchar_t * s = L"??????";

    std::cout << std::wstring(s).length() << std::endl; // Gives "6"

    int l = 0;
    while(CharNextW(s) != …
Run Code Online (Sandbox Code Playgroud)

c++ unicode cross-platform icu

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

如何在Perl中生成数组的所有排列?

n!在perl中生成数组的所有排列的最佳(优雅,简单,高效)方法是什么?

例如,如果我有一个数组@arr = (0, 1, 2),我想输出所有排列:

0 1 2
0 2 1
1 0 2
1 2 0
2 0 1
2 1 0
Run Code Online (Sandbox Code Playgroud)

它应该是一个返回迭代器的函数(延迟/延迟评估,因为它n!可能变得非常大),所以它可以这样调用:

my @arr = (0, 1, 2);
my $iter = getPermIter(@arr);
while (my @perm = $iter->next() ){
    print "@perm\n";
}
Run Code Online (Sandbox Code Playgroud)

arrays algorithm perl permutation

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

如何使用std :: copy将一个地图复制到另一个地图?

我想将一个std :: map的内容复制到另一个.我可以用std::copy它吗?显然,以下代码不起作用:

int main() {
  typedef std::map<int,double> Map;
  Map m1;
  m1[3] = 0.3;
  m1[5] = 0.5;
  Map m2;
  m2[1] = 0.1;
  std::copy(m1.begin(), m1.end(), m2.begin());
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

这不会因为工作copy会叫operator*m2.begin()为"解引用",并分配一个值(所有值的类型的std::pair<const int, double>).然后它将调用operator++移动到下一个空间m2.这两个操作都因为constin const int而无法工作,并且没有为任何新元素保留空间.

有没有办法让它适用std::copy

谢谢!

c++ iterator stl copy map

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

断言失败时如何打印附加信息?

如果assert失败,通常会想要打印其他信息.一种方法是这样的:

assert(vec.size() > i || 
  !(std::cerr << "False: " << vec.size() << ">" << i))
Run Code Online (Sandbox Code Playgroud)

这样,当assert失败时打印实际尺寸.但它很难看,并且很容易忘记!,这将使断言条件成立,程序将继续.

如上所述,人们使用什么来打印关于断言失败的其他信息?

c++ debugging assert

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

Emacs/AUCTeX:在当前未打开的文件上运行命令

我使用AUCTeX在Emacs中编辑我的LaTeX文件.要编译,我按C-c C-c,将运行pdflatex root,如果root.tex文件显示在当前缓冲区中.

但是,如果我希望它pdflatex在当前缓冲区中未显示的文件上运行呢?

例如,我正在编辑包含的.tex文件chapter2.tex,然后按C-c C-c.我希望它运行的命令仍然是pdflatex root,因为chapter2.tex它只是包含在中root.tex.

我怎样才能做到这一点?

lisp emacs latex auctex

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

我可以在shebang线上使用带/ bin/env的perl开关吗?

我想继续perl -w使用env.这在命令行上运行正常:

$ /bin/env perl -we 'print "Hello, world!\n"'
Hello, world!
Run Code Online (Sandbox Code Playgroud)

但它不适用于脚本中的shebang行:

#!/bin/env perl -w
print "Hello, world!\n";
Run Code Online (Sandbox Code Playgroud)

这是错误:

/bin/env: perl -w: No such file or directory
Run Code Online (Sandbox Code Playgroud)

显然env不明白-w我要传递的旗帜perl.怎么了?

scripting perl command-line system

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