Tag: C#的

在C中打印hex字符

我试图读取一行字符,然后打印出相当于字符的hex。 例如,如果我有一个string是"0xc0 0xc0 abc123" ,其中前两个字符是hex的c0 ,其余的字符是abc123的ASCII,那么我应该得到 c0 c0 61 62 63 31 32 33 但是,使用%x printf给了我 ffffffc0 ffffffc0 61 62 63 31 32 33 如何在没有"ffffff"情况下获得我想要的输出? 为什么只有c0(和80)有ffffff ,而不是其他的字符?

使用自定义的std :: set比较器

我想改变一个整数的项目的默认顺序是字典而不是数字,我不能得到以下用g ++编译: file.cpp: bool lex_compare(const int64_t &a, const int64_t &b) { stringstream s1,s2; s1 << a; s2 << b; return s1.str() < s2.str(); } void foo() { set<int64_t, lex_compare> s; s.insert(1); … } 我得到以下错误: error: type/value mismatch at argument 2 in template parameter list for 'template<class _Key, class _Compare, class _Alloc> class std::set' error: expected […]

使用char *作为std :: map中的键

我想弄清楚为什么下面的代码不工作,我假设这是使用char *作为键types的问题,但我不知道如何解决它或为什么发生。 我使用的所有其他函数(在HL2 SDK中)都使用char*所以使用std::string会导致很多不必要的复杂性。 std::map<char*, int> g_PlayerNames; int PlayerManager::CreateFakePlayer() { FakePlayer *player = new FakePlayer(); int index = g_FakePlayers.AddToTail(player); bool foundName = false; // Iterate through Player Names and find an Unused one for(std::map<char*,int>::iterator it = g_PlayerNames.begin(); it != g_PlayerNames.end(); ++it) { if(it->second == NAME_AVAILABLE) { // We found an Available Name. Mark as Unavailable […]

如何从迭代中删除地图?

如何在迭代时从地图中删除? 喜欢: std::map<K, V> map; for(auto i : map) if(needs_removing(i)) // remove it from the map 如果我使用map.erase它将使迭代器无效

如何使用模板将lambda转换为std :: function

基本上,我想要能够做的就是带任意数量的任何types的参数的lambda,并将其转换为一个std ::函数。 我已经尝试了以下两种方法的工作。 std::function([](){});//Complains that std::function is missing template parameters template <typename T> void foo(function<T> f){} foo([](){});//Complains that it cannot find a matching candidate 下面的代码可以工作,但是这不是我想要的,因为它需要显式声明不适用于generics代码的模板参数。 std::function<void()>([](){}); 我一直在使用函数和模板整夜,我只是无法弄清楚,所以任何帮助将不胜感激。 正如在评论中提到的,我试图做到这一点的原因是因为我试图使用可变参数模板在C ++中实现柯里化。 不幸的是,这在使用lambda时会失败。 例如,我可以使用函数指针传递一个标准函数。 template <typename R, typename…A> void foo(R (*f)(A…)) {} void bar() {} int main() { foo(bar); } 但是,我不知道如何将lambda传递给这样一个可变参数的函数。 为什么我有兴趣将genericslambda转换成std :: function是因为我可以做到以下几点,但是最终它要求我明确地将模板参数声明为std :: function,这正是我想要避免的。 template <typename […]

我可以在不使用朋友的情况下从课外访问私人成员吗?

放弃 是的,我完全知道我所问的是完全愚蠢的,任何想要在生产代码中尝试这样的东西的人都应该被解雇和/或开枪。 我主要看看是否可以做到。 现在,这是没有办法,有没有办法从课堂以外的C ++访问私人类成员? 例如,有没有办法做到这一点与指针偏移量? (天真和否则生产准备技术欢迎) 更新 正如在评论中指出的那样,我问这个问题是因为我想写一个关于封装(以及它如何影响TDD)的博客文章。 我想看看是否有办法说“使用私有variables不是100%可靠的方法来强制封装,即使在C ++中”。 最后,我决定把更多的精力放在如何解决问题上,而不是为什么这是一个问题,所以我没有像我计划的那样突出显示一些东西,但是我仍然留下了一个链接。 无论如何,如果有人对它是如何感兴趣的话,这里是: testing驱动开发的敌人第一部分:封装 (我build议在你决定疯了之前阅读它)。

你如何构build一个embedded式null的std :: string?

如果我想用一行如下构造一个std :: string: std::string my_string("a\0b"); 我想在结果string(a,null,b)中有三个字符,我只能得到一个。 什么是正确的语法?

用LINQ进行对象分页

你将如何在LINQ查询中实现分页? 其实暂时,我会满意,如果SQL TOPfunction可以被模仿。 不过,我相信无论如何,迟早会出现对全面分页支持的需求。 var queryResult = from o in objects where … select new { A = oa, B = ob } ????????? TOP 10????????

C / C ++macrosstring连接

#define STR1 "s" #define STR2 "1" #define STR3 STR1 ## STR2 是否可以连接STR3 ==“s1”? 您可以通过将parameter passing给另一个macros函数来完成此操作。 但有没有直接的方法?

如果与开关速度

由于编译器优化,switch语句通常比等效的if-else-if语句更快(如本文所描述的那样)。 这个优化如何实际工作? 有没有人有一个很好的解释?