预置std::string的最有效方法是什么? 是否值得写出一个完整的函数呢,还是只需要1-2行呢? 我没有看到任何与std::string::push_front相关的东西。
在STL中如何实现交换function? 这是否简单: template<typename T> void swap(T& t1, T& t2) { T tmp(t1); t1=t2; t2=tmp; } 在其他职位,他们谈论专门为您自己的class级这个function。 为什么我需要这样做? 为什么我不能使用std::swap函数?
发现一个有趣的问题,下面的代码运行一个不同的结果: char c = 'a'; c += 'a'; //passed c = c + 'a'; //Cannot implicitly convert type 'int' to 'char'. An explicit conversion exists (are you missing a cast?) a += b和a=a+b之间是否有区别,或者只是编译器的代码检查错过了? 我的观点是为什么char += char可以通过代码检查,而char = (char+char)认为是char = int ?
我正在研究一个将要运行很长时间的后台程序,并且我有一个外部日志程序( SmartInspect ),我想定期使用一些值来进行debugging,以在debugging时实时监控它。 我知道我可以简单地启动多个程序,比如任务pipe理器,或者IARSN TaskInfo,但是我想把所有的东西放在我自己的程序中,因为我也想添加一些简单的规则,比如程序使用多于X%CPU,在日志中标记这个。 我有一个后台线程,定期向SmartInspect提供一些统计信息,如内存消耗,工作集等。 这个线程是否有可能准确衡量它消耗了多less计算机的CPU资源? 主程序是一个单线程应用程序(除了看门狗线程logging统计),所以如果一种技术被限制在一个线程使用多less,那么这也是一个好主意。 我发现了一些与Linux和C的rusage相关的条目。有没有类似的东西可以用于这个? 编辑:好的,我尝试了性能计数器的方式,但是每次调用时都添加了很多GC数据,所以内存使用和垃圾收集的graphics猛增。 我想我现在就把这个部分留下。
我在Windows Vista Ultimate SP1上使用以下代码来查询我们的活动目录服务器,以检查域上用户的用户名和密码。 public Object IsAuthenticated() { String domainAndUsername = strDomain + "\\" + strUser; DirectoryEntry entry = new DirectoryEntry(_path, domainAndUsername, strPass); SearchResult result; try { //Bind to the native AdsObject to force authentication. DirectorySearcher search = new DirectorySearcher(entry) { Filter = ("(SAMAccountName=" + strUser + ")") }; search.PropertiesToLoad.Add("givenName"); // First Name search.PropertiesToLoad.Add("sn"); // […]
在.net中本地化枚举描述的最佳方法是什么? (有关枚举描述示例,请参阅为枚举常量添加描述 ) 理想情况下,我希望使用ResourceManager和资源文件,以适应其他应用程序本地化。
自从.net 2.0引入这个概念以来,我一直在寻找一些很好的指导。 为什么我会想在c#中使用不可空数据types? (一个更好的问题是,为什么我不会默认select可空types,只有在明确有意义时才使用非空types。) 在非空对等体上select可空数据types是否存在“重大”性能影响? 我更喜欢检查我的值对null而不是Guid.empty,string.empty,DateTime.MinValue,<= 0等,并与一般可空types的工作。 而且我不经常select可空types的唯一原因就是我脑海中的痒感,这让我觉得这不仅仅是向后兼容,而是强制这些额外的“? 字符显式允许空值。 有没有人总是(总是)select可空types而不是非空types? 谢谢你的时间,
似乎这将是一个重复,但也许它是如此明显,它没有被问到… 这是检查一个variables(而不是指针)是否在C ++类中初始化的正确方法? class MyClass { void SomeMethod(); char mCharacter; double mDecimal; }; void MyClass::SomeMethod() { if ( mCharacter ) { // do something with mCharacter. } if ( ! mDecimal ) { // define mDecimal. } }
我试图构build一个涉及Windows和控制台应用程序的简单解决scheme。 使用向导生成项目的代码框架后,我没有添加任何代码,只是build立了生成的代码。 在这两种情况下,我得到了同样的错误: 1>c:\c\winpr\winpr\winpr.cpp(4) : fatal error C1859: 'Debug\winpr.pch' unexpected precompiled header error, simply rerunning the compiler might fix this problem 什么是错的,有什么想法?
在C ++ 11中引入了一个非常方便的function,称为原始string文字,它是不含转义字符的string。 而不是写这个: regex mask("\\t[0-9]+\\.[0-9]+\\t\\\\SUB"); 你可以简单的写下这个: regex mask(R"(\t[0-9]+\.[0-9]+\t\\SUB)"); 更可读。 但是,注意在string周围必须放置额外的圆括号来定义原始string文字。 我的问题是,为什么我们甚至需要这些? 对我来说,这看起来相当丑陋,不合逻辑。 以下是我所看到的缺点: 额外的冗长,而整个function是用来使文字更紧凑 很难区分文字的正文和定义的符号 这就是我所说的难以区分的意思: "good old usual string literal" ^- body inside quotes -^ R"(new strange raw string literal)" ^- body inside parenthesis -^ 这里是亲: 更多的灵活性,在原始string中可用的字符更多,特别是当与分隔符一起使用时: "delim( can use () here )delim" 但是,嘿,如果你需要更多的灵活性,你有老好的可逃避的string文字。 为什么标准委员会决定用这些绝对不必要的括号来污染每一个原始string的内容? 那背后的理由是什么? 我没有提到的优点是什么?