如何创建一个从内容变量命名的函数?我想编写一个模板脚本,用于定义以脚本自己的文件名命名的函数.像这样的东西(当然不起作用):
#!/bin/bash
bname="$(basename $0)" # filename of the script itself
someprefix_${bname}() { # function's name created from $bname variable
echo test
}
Run Code Online (Sandbox Code Playgroud)
因此,如果脚本的文件名是foo.sh,那么它应该定义一个名为someprefix_fooecho test 的函数.
既然C++ 11已经出来了,我想知道当越来越多的代码从C++ 98迁移到C++ 11时,是否有任何关于改进Emacs中的缩进支持的技巧.
例子:
以下是我发现自己在努力解决的一些问题:
struct m {
int a;
char b;
};
std::vector<m> foo { {1, 'a'},
{2, 'b'},
{ 3, 'c'},
{ 4, 'd' }};
Run Code Online (Sandbox Code Playgroud)
我更喜欢
std::vector<m> foo { {1, 'a'},
{2, 'b'},
{ 3, 'c'},
{ 4, 'd' }};
Run Code Online (Sandbox Code Playgroud)
甚至
std::vector<m> foo { {1, 'a'},
{2, 'b'},
{ 3, 'c'},
{ 4, 'd' }};
Run Code Online (Sandbox Code Playgroud)
例如.
下一个:
cout << 5
<< [](int a) {
return 2 * a; …Run Code Online (Sandbox Code Playgroud) 我有一个字符串,应该用ISO 8601格式指定一个日期和时间,其中可能有或没有毫秒,我想struct tm从它获得一个以及可能已指定的任何毫秒值(可以是如果不存在于字符串中则假定为零).
检测字符串格式是否正确,以及将用户指定的字符串转换为struct tm毫秒和毫秒值会涉及什么?
如果它不是毫秒问题,我可能只是使用C函数strptime(),但我不知道当秒包含小数点时该函数的定义行为应该是什么.
最后一点需要注意的是,如果可能的话,我会更喜欢一种解决方案,它不依赖于仅在Boost中找到的函数(但我很乐意接受C++ 11作为先决条件).
输入看起来像:
2014-11-12T19:12:14.505Z
Run Code Online (Sandbox Code Playgroud)
要么
2014-11-12T12:12:14.505-5:00
Run Code Online (Sandbox Code Playgroud)
Z在这种情况下,表示UTC,但可以使用任何时区,并将表示为与GMT的+或 - 小时/分钟偏移.秒字段的小数部分是可选的,但它可能存在的事实是我不能简单地使用strptime()或者std::get_time(),如果在字符串的秒部分中找到这样的字符,则不会描述任何特定的定义行为.
我要求允许字段的字母数字和某些其他字符.我正在使用这个正则表达式:
"^[a-zA-Z0-9!@#$&()-`.+,/\"]*$".
Run Code Online (Sandbox Code Playgroud)
允许的特殊字符是! @ # $ & ( ) - ‘ . / + , “
但是当我用字符串"test_for_extended_alphanumeric"测试模式时,字符串通过了测试.我"_"不允许这种模式.我究竟做错了什么?
可变参数模板有很多优点,但有时候<cstdarg>应该使用C风格的可变参数函数(使用)吗?
我正在尝试了解urllib2如何工作以及如何在发送实际请求或响应之前封装其各种组件.
到目前为止,我有:
theurl = "www.example.com"
Run Code Online (Sandbox Code Playgroud)
这显然指定了要查看的URL.
req = urllib2.Request(theurl)
Run Code Online (Sandbox Code Playgroud)
不知道这是做什么的,因此问题.
handle = urllib2.urlopen(req)
Run Code Online (Sandbox Code Playgroud)
这个获取页面并完成所需的所有请求和响应.
所以我的问题是,urllib2.Request实际上做了什么?
试着看看它以获得一个我尝试过的想法
print req
Run Code Online (Sandbox Code Playgroud)
刚刚得到
<urllib2.Request instance at 0x123456789>
Run Code Online (Sandbox Code Playgroud)
我也试过了
print req.read()
Run Code Online (Sandbox Code Playgroud)
得到了:
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/usr/lib64/python2.4/urllib2.py, line 207, in `__`getattr`__`
raise AttributeError, attr
AttributeError: read
Run Code Online (Sandbox Code Playgroud)
所以我显然做错了什么.如果有人可以在我的两个问题中提供帮助,那就太棒了.
根据C标准:
在构成整个程序的翻译单元和库的集合中,具有外部链接的特定标识符的每个声明 表示相同的对象或功能.在一个翻译单元内,具有内部链接的标识符的每个声明 表示相同的对象或功能.没有链接的标识符的每个声明 表示唯一的实体.
在我的例子中,我们有三个单独的声明,每个标识符具有不同的链接.所以为什么这不起作用?
static int a; //a_Internal
int main(void) {
int a; //a_Local
{
extern int a; //a_External
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
错误:
在函数'main'中:第9行:错误:变量先前声明'static'relayclared'extern'
为什么编译器坚持要重新声明我而不是尝试访问另一个文件中的外部对象?
有效的C++示例供参考:
static void f();
static int i = 0; // #1
void g() {
extern void f(); // internal linkage
int i; // #2 i has no linkage
{
extern void f(); // internal linkage
extern int i; // #3 external linkage
}
}
Run Code Online (Sandbox Code Playgroud)
Clang和VC似乎都适用于我的C示例; 只有某些版本的GCC(并非所有版本)都会产生上述错误.
Java Normalize已允许我使用重音字符并输出非重音字符.但是,它似乎并没有完全处理复合字符(Œ,Æ).
有没有办法让Java本地处理这些字符?我想防止必须保留这些字符的映射(因为这是我们首先使用Normalize的原因).
例如,"Œ"的输入应该返回"OE",就像它已经将诸如"½"之类的字符整齐地分解为"1/2"的方式一样.
以下代码段摘自cppref:
std::tuple<int, int&> f();
auto [x, y] = f();
// decltype(x) is int
// decltype(y) is int&
const auto [z, w] = f();
// decltype(z) is const int
// decltype(w) is int&
Run Code Online (Sandbox Code Playgroud)
我的问题是在最后一行:
为什么 是 decltype(w) int& 不是 const int&?
我有一个List<Card>,我想对这些卡片进行排序
因此,我正在寻找一种方法,可以根据不同的条件(例如ID,Name...)对它们进行排序
public class Card : IComparer
{
public string ID;
public string Name;
public int CompareId(object firstCard, object secondCard)
{
Card c1 = (Card)firstCard;
Card c2 = (Card)secondCard;
return c1.Id.CompareTo(c2.Id);
}
}
Run Code Online (Sandbox Code Playgroud)
但是随后,Visual Studio向我发送了一个错误:
'Card'没有实现接口成员'IComparer<Card>.Compare(Card, Card)'