我无法find关于const_cast很多信息。 我能find的唯一信息(堆栈溢出)是: const_cast<>()用于添加/删除variables的const(ness)(或volatile)。 这让我紧张。 可以使用const_cast导致意外的行为? 如果是这样,什么? 或者,什么时候可以使用const_cast ?
在Windows窗体中 ,您可以随时了解Cursors类的当前位置。 同样的事情似乎没有可用的键盘。 是否有可能知道,例如,按下Shift键? 是否有必要追查每一个键盘通知(KeyDown和KeyUp事件)?
我有一个类private char str[256]; 为此我有一个明确的构造函数: explicit myClass(const char *func) { strcpy(str,func); } 我把它称为: myClass obj("example"); 当我编译这个时,我得到以下警告: 不推荐将string常量转换为“char *” 为什么发生这种情况?
最近在一次采访中,有一个客观types的问题。 int a = 0; cout << a++ << a; 回答: 一个。 10 湾 01 C。 未定义的行为 我回答了selectb,即输出将是“01”。 但是让我吃惊的是后来,一位面试官告诉我,正确的答案是选项c:undefined。 现在,我知道C ++中序列点的概念。 以下语句的行为未定义: int i = 0; i += i++ + i++; 但根据我对语句cout << a++ << a的ostream.operator<<() , ostream.operator<<()将被调用两次,第一次使用ostream.operator<<(a++)和后来的ostream.operator<<(a) 。 我也检查了VS2010编译器的结果,它的输出也是'01'。
我刚刚进入一个具有相当庞大代码库的项目。 我主要处理C ++和他们写的很多代码使用双重否定他们的布尔逻辑。 if (!!variable && (!!api.lookup("some-string"))) { do_some_stuff(); } 我知道这些人是聪明的程序员,显然他们不是偶然的。 我不是经验丰富的C ++专家,我唯一的猜测是为什么他们这样做是因为他们想要绝对肯定被评估的值是实际的布尔表示。 所以他们否定它,然后再次否定它回到它的实际布尔值。 这是正确的,还是我错过了什么?
void main() { if("a" == "a") printf("Yes, equal"); else printf("No, not equal"); } 为什么输出No, not equal ?
扩展我以前的问题 ,我已经决定(德)序列化我的configuration文件类效果很好。 我现在想要存储驱动器号映射(关键是驱动器号,值是networkingpath)的关联数组,并尝试使用Dictionary , HybridDictionary和Hashtable为此但调用ConfigFile.Load()时我总是得到以下错误ConfigFile.Load()或ConfigFile.Save() : 反映types“App.ConfigFile”的错误。 [snip] System.NotSupportedException:无法序列化成员App.Configfile.mappedDrives [snip] 从我读的字典和HashTables可以序列化,所以我做错了什么? [XmlRoot(ElementName="Config")] public class ConfigFile { public String guiPath { get; set; } public string configPath { get; set; } public Dictionary<string, string> mappedDrives = new Dictionary<string, string>(); public Boolean Save(String filename) { using(var filestream = File.Open(filename, FileMode.OpenOrCreate,FileAccess.ReadWrite)) { try { var serializer = new […]
我想parsing一个string像"3.5"到一个double。 然而, double.Parse("3.5") 收益35和 double.Parse("3.5", System.Globalization.NumberStyles.AllowDecimalPoint) 抛出一个FormatException 。 现在我的电脑的语言环境设置为德语,其中逗号用作小数点分隔符。 它可能需要做些什么和double.Parse()期待"3,5"作为input,但我不知道。 我怎样才能parsing一个string包含一个十进制数字,可能或不可能是我的当前区域设置中指定的格式?
我试图在两个Web应用程序之间共享会话,这两个应用程序都托pipe在同一台服务器上 一个是.net 2.0 web表单应用程序,另一个是.net 3.5 MVC2应用程序。 这两个应用程序的会话都是这样设置的: <sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" /> 在webform应用程序中,我将会话密钥发布到MVC应用程序中: protected void LinkButton1_Click(object sender, EventArgs e) { Session["myvariable"] = "dan"; string sessionKey = HttpContext.Current.Session.SessionID; //Followed by some code that posts sessionKey to the other application } 然后我在MVC应用程序中收到它,并尝试使用像这样的相同的会话: [HttpPost] public void Recieve(string sessionKey ) { var manager = new SessionIDManager(); bool redirected; bool IsAdded; […]
我需要比较C#中的两个string,并将重音字母与非重音字母相同。 例如: string s1 = "hello"; string s2 = "héllo"; s1.Equals(s2, StringComparison.InvariantCultureIgnoreCase); s1.Equals(s2, StringComparison.OrdinalIgnoreCase); 这两个string需要相同(就我的应用程序而言),但是这两个语句的计算结果都是错误的。 在C#中有没有办法做到这一点?