小编Ben*_*min的帖子

如何将CString传递给格式字符串%s?

class MyString
{
public:
    MyString(const std::wstring& s2)
    {
        s = s2;
    }

    operator LPCWSTR() const
    {
        return s.c_str();
    }
private:
    std::wstring s;
};

int _tmain(int argc, _TCHAR* argv[])
{
    MyString s = L"MyString";
    CStringW cstring = L"CString";
    wprintf(L"%s\n", (LPCWSTR)cstring); // Okay. Becase it has an operator LPCWSTR()
    wprintf(L"%s\n", cstring); // Okay, fine. But how?        
    wprintf(L"%s\n", (LPCWSTR)s); // Okay. fine.
    wprintf(L"%s\n", s); // Doesn't work. Why? It prints gabage string like "?."
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如何将CString传递给格式字符串%s?

顺便一句,MSDN说(这很奇怪) …

c++ windows string type-conversion string-formatting

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

擦除std :: map中的特定元素

我想删除我的std :: map中的一些元素.
我写了erase + remove_if技术,我总是使用其他序列容器.
但它不是用地图编译的.为什么?
我怎么能做这个工作?

std::map<int, int> m;

bool foo(const std::pair<int, int>& p)
{
    return p.second > 15;
}

int _tmain(int argc, _TCHAR* argv[])
{
    m.insert(make_pair(0, 0));
    m.insert(make_pair(1, 10));
    m.insert(make_pair(2, 20));
    m.insert(make_pair(3, 30));

    m.erase(
        remove_if(m.begin(), m.end(), foo),
        m.end()); // compile error

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ algorithm containers stl map

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

如何在NTFS上创建稀疏文件?

我正在测试一个稀疏文件.但我的测试代码效果不佳.

HANDLE h = CreateFileW(L"D:\\sparse.test",
        GENERIC_READ|GENERIC_WRITE,
        FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
        0,
        CREATE_ALWAYS,
        FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_SPARSE_FILE,
        0);

DWORD d = GetFileAttributes(L"D:\\sparse.test");
// The function returns 32(FILE_ATTRIBUTE_ARCHIVE).
// Where is FILE_ATTRIBUTE_SPARSE_FILE flag?
// How do I make a sparse file.

DWORD written;
WriteFile(h, "aaa", 3, &written, 0);
SetFilePointer(h, 2*1024*1024*1023, 0, FILE_BEGIN);
SetEndOfFile(h);
WriteFile(h, "bbb", 3, &written, 0);
Run Code Online (Sandbox Code Playgroud)

windows file-io winapi ntfs sparse-file

12
推荐指数
2
解决办法
3403
查看次数

如何使用尾部或更少的颜色查看彩色日志?

在此输入图像描述

阅读Rails日志vim,我们可以看到彩色日志.但是当我们使用tail -fless观看日志时,它不再着色了.有没有办法看到的彩色日志,tail或者less还是什么?

logging ruby-on-rails tail ansi-escape less

12
推荐指数
3
解决办法
4538
查看次数

如何重构这个结构,if-else-if-else-if*100

有一些讨厌的遗留代码.

std::string xxx = GetCommand(); // get "CommandX";
if (xxx == "Command1")
{
    return new Command1();
}
else if (xxx == "Command2")
{
    return new Command2();
}
...
else if (xxx == "Command100")
{
    return new Command100();
}
Run Code Online (Sandbox Code Playgroud)

我想改进这个代码结构.
有太多的比较.所以我把它们放到地图上.

for (int i = 0; i < GetCommandCount(); ++i)
{
    // key is a command string
    // value is a function pointer which creates it's instance
    map.insert(command, a function pointer);
}

// then

ICommand* pCommand = map.getInstance(command);
Run Code Online (Sandbox Code Playgroud)

但是,如果有新的命令,这种方式必须每次都有额外的功能.是的,功能可能是合理的.但所有的功能只是return new …

c++ design-patterns

11
推荐指数
2
解决办法
873
查看次数

什么意思?

我所知道的是

\\.\ 
Run Code Online (Sandbox Code Playgroud)

当我们在用户模式下打开设备的符号链接时使用它

\??\ 
Run Code Online (Sandbox Code Playgroud)

在我们以内核模式打开设备时使用它

\\?\  
Run Code Online (Sandbox Code Playgroud)

长文件名

\\    
Run Code Online (Sandbox Code Playgroud)

UNC路径.

但我想知道更多细节.
你能更准确地解释一下这些前缀吗?

windows filesystems object

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

微软已知的DLL

HKML\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs

KnownDLL 的目的是什么?(为了更快地加载某些 Dll?)

如果我有管理员令牌,我就可以控制注册表值。
难道就没有安全漏洞吗?

微软为何支持该功能?

windows dll

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

如何使用序号调用导出的函数

如果dll导出某些函数并且函数只有序数,我该如何调用这些函数?

请给我一个简短的例子.

windows dll ordinals ordinal

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

如何从装饰名称中取消装饰名称?

在Raymond Chen的一篇文章中,他似乎能够从装饰名称中了解该函数的未修饰名称.我不知道他怎么能这样做.

在这个装饰的名字,

?的GetName @可通过按钮@ UILibrary @@ UAEPB_WPAPAVStringHolder @ 2 @@ž

每个组件的含义是什么?

c++ windows name-mangling visual-studio

10
推荐指数
3
解决办法
8180
查看次数

使用一些参数运行rails runner

这个命令是我的问题:

/usr/local/bin/ruby **script/runner** --environment=production app/jobs/**my_job.rb** -t my_arg

`my_job.rb` is my script, which handles command line arguments. In this case it is `-t my_arg`.
Run Code Online (Sandbox Code Playgroud)

my_job.rb也需要`--environment = production'作为参数,这应该是script/runner的参数.
我想这可以用一些括号来解决,但没有一个想法.

如果解决方案没有触及(或依赖于)Rails或Linux的全局环境,那就更好了.

/usr/local/lib/ruby/1.8/optparse.rb:1450:in `complete': invalid option: --environment=production (OptionParser::InvalidOption)
  from /usr/local/lib/ruby/1.8/optparse.rb:1448:in `catch'
  from /usr/local/lib/ruby/1.8/optparse.rb:1448:in `complete'
  from /usr/local/lib/ruby/1.8/optparse.rb:1261:in `parse_in_order'
  from /usr/local/lib/ruby/1.8/optparse.rb:1254:in `catch'
  from /usr/local/lib/ruby/1.8/optparse.rb:1254:in `parse_in_order'
  from /usr/local/lib/ruby/1.8/optparse.rb:1248:in `order!'
  from /usr/local/lib/ruby/1.8/optparse.rb:1339:in `permute!'
  from /usr/local/lib/ruby/1.8/optparse.rb:1360:in `parse!'
  from app/jobs/2new_error_log_rt_report.rb:12:in `execute'
  from app/jobs/2new_error_log_rt_report.rb:102
  from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `eval'
  from /home/www/maldive/admin/releases/20120914030956/vendor/rails/railties/lib/commands/runner.rb:46
  from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
  from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
  from script/runner:3
Run Code Online (Sandbox Code Playgroud)

ruby linux bash command-line ruby-on-rails

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