我如何将std::ostream绑定到std::cout或std::ofstream对象,具体取决于特定的程序条件? 虽然这个失效的原因很多,但是我想达到的东西在语义上等同于以下几点: std::ostream out = condition ? &std::cout : std::ofstream(filename); 我见过一些不是exception安全的例子,比如http://www2.roguewave.com/support/docs/sourcepro/edition9/html/stdlibug/34-2.html : int main(int argc, char *argv[]) { std::ostream* fp; //1 if (argc > 1) fp = new std::ofstream(argv[1]); //2 else fp = &std::cout //3 *fp << "Hello world!" << std::endl; //4 if (fp!=&std::cout) delete fp; } 有谁知道一个更好的,exception安全的解决scheme?
使用WebClient类,我可以很容易地得到一个网站的标题: WebClient x = new WebClient(); string source = x.DownloadString(s); string title = Regex.Match(source, @"\<title\b[^>]*\>\s*(?<Title>[\s\S]*?)\</title\>", RegexOptions.IgnoreCase).Groups["Title"].Value; 我想存储url和页面标题。 但是,当按照以下链接进行操作时: http://tinyurl.com/dbysxp 我显然希望获得我redirect到的url。 质询 有没有办法使用WebClient类来做到这一点? 我将如何使用HttpResponse和HttpRequest ?
阅读亚马逊和ACCU的评论表明,John Lakos的书“ 大规模C ++软件devise”可能是模块化的Rosetta Stone。 与此同时,这本书似乎是非常罕见的:没有多less人读过它,没有海盗电子副本在四处stream动。 所以你怎么看? [由于这是谷歌search书名第三,留下我的投票重新开放,这将是一个可惜的是,在这里放弃所有有用的讨论(我一直认为这是适合它的地方)。]
好的,不是C / C ++专家,但是我认为头文件的目的是声明函数,然后C / CPP文件定义实现。 然而,今天晚上回顾一些C ++代码,我发现这在一个类的头文件中… public: UInt32 GetNumberChannels() const { return _numberChannels; } // <– Huh?? private: UInt32 _numberChannels; 那么为什么在头文件中有一个实现呢? 它是否与const关键字有关? 这是内联一个类的方法吗? 这样做的好处是什么,而在CPP文件中定义实现呢? 更新 我看到了很多类似的答案,但是讽刺的是他们其中一个在这里解释const关键字(尽pipe有人在这个问题的评论中做过)。由于所有的答案基本上都是关于内联的说法,第一个答案也解释那个const词将得到投票。
我被要求描述这些代码行在做大学作业 int main() { int t1[] = {0,0,1,1,1}, t2[] = {0,0,1,1,1}; int *p1 = t1, *p2 = t2; while (!*p1++ || !*p2++); cout << (p1-t1) << endl; cout << (p2-t2) << endl; } 我的意思是,2个inttypes的数组被创build和填充值,2个指针被创build并指向每个数组,然后我开始有麻烦了。 while (!*p1++ || !*p2++); 对我来说这是说0移动*p1的位置一个位置或者0移动*p2的位置一个位置,我对这个假设真的没有信心吗? cout << (p1-t1) << endl; 所以然后我们转到cout ,现在我的意思是,我从t1的位置减去p1的位置,其中p1被while定位, t1指向数组中的第一个位置。 再次我可能是完全错误的我只是学习指针,所以请记住,如果我错了我的假设。
这可能是一个愚蠢的问题,但有可能分配一些值而不是所有的数组? 澄清我想要什么: 如果我需要像{1,0,0,0,2,0,0,0,3,0,0,0}这样的数组,我可以像这样创build它: int array[] = {1,0,0,0,2,0,0,0,3,0,0,0}; 这个数组的大部分值是'0'。 是否可以跳过这个值,只分配值1,2和3? 我想像这样的东西: int array[12] = {0: 1, 4: 2, 8: 3};
我有一个使用IList<T>作为参数的方法。 我需要检查T对象的types,并根据它做一些事情。 我试图使用T值,但编译器不允许它。 我的解决scheme如下: private static string BuildClause<T>(IList<T> clause) { if (clause.Count > 0) { if (clause[0] is int || clause[0] is decimal) { //do something } else if (clause[0] is String) { //do something else } else if (…) //etc for all the types else { throw new ApplicationException("Invalid type"); } } } 必须有更好的方法来做到这一点。 […]
我有一个Windows窗体应用程序(用C#编写)的DataGridView控件。 我需要的是:当用户select一个DataGridViewRow,然后点击一个“删除”button,该行应该被删除,接下来,数据库需要更新使用表适配器。 这是我迄今为止: private void btnDelete_Click(object sender, EventArgs e) { if (this.dataGridView1.SelectedRows.Count > 0) { dataGridView1.Rows.RemoveAt(this.dataGridView1.SelectedRows[0].Index); } } 而且,这只会删除一行。 我想在哪里用户可以select多行。
我有一个string的下一个格式"ORDER20100322194007" ,其中20100322是date和194007是时间。 如何parsing一个string并获取包含的DateTime对象?
可能重复: 什么时候应该使用static_cast,dynamic_cast和reinterpret_cast? 我在c ++中使用c函数,在c中作为voidtypesparameter passing的结构直接存储在相同的结构types中。 例如在C. void getdata(void *data){ Testitem *ti=data;//Testitem is of struct type. } 在c ++中做同样的事情我使用static_cast: void foo::getdata(void *data){ Testitem *ti = static_cast<Testitem*>(data); } 当我使用reinterpret_cast它做同样的工作,铸造结构 当我使用Testitem *it=(Testitem *)data; 这也是同样的事情。 但是如何利用三者来影响结构呢?