Tag: C#的

如何连接一个std :: string和一个int?

我认为这会很简单,但是会带来一些困难。 如果我有 std::string name = "John"; int age = 21; 我如何将他们结合起来得到一个string"John21" ?

std ::向量元素是否保证是连续的?

我的问题很简单:std :: vector元素保证是连续的吗? 换句话说,我可以使用std :: vector的第一个元素作为C数组吗? 如果我的记忆为我服务,C ++标准没有做出这样的保证。 然而,std :: vector的要求是这样的,如果元素不是连续的,要满足它们几乎是不可能的。 有人可以澄清这一点吗? 例: std::vector<int> values; // … fill up values if( !values.empty() ) { int *array = &values[0]; for( int i = 0; i < values.size(); ++i ) { int v = array[i]; // do something with 'v' } }

Excel“外部表格不是预期的格式”。

我正在尝试使用下面显示的代码读取Excel(xlsx)文件。 我得到一个“外部表格不是预期的格式”。 错误,除非我已经在Excel中打开文件。 换句话说,我必须先在Excel中打开文件,然后才能从我的C#程序中读取。 xlsx文件在我们的networking上共享。 我怎样才能读取文件,而不必先打开它? 谢谢 string sql = "SELECT * FROM [Sheet1$]"; string excelConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathname + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1;\""; using (OleDbDataAdapter adaptor = new OleDbDataAdapter(sql, excelConnection)) { DataSet ds = new DataSet(); adaptor.Fill(ds); }

任何区别“await Task.Run(); 返回;“和”返回Task.Run()“?

以下两段代码之间有什么概念上的区别: async Task TestAsync() { await Task.Run(() => DoSomeWork()); } 和 Task TestAsync() { return Task.Run(() => DoSomeWork()); } 生成的代码是否有所不同? 编辑:为了避免与Task.Run混淆类似的情况: async Task TestAsync() { await Task.Delay(1000); } 和 Task TestAsync() { return Task.Delay(1000); } 最新更新:除了接受的答案之外, LocalCallContext的处理方式也有所不同: CallContext.LogicalGetData即使在没有asynchronous的情况下也会被恢复。 为什么?

为什么比特位是位域的问题?

任何使用位域的便携式代码似乎都可以区分小端和大端平台。 在linux内核中查看struct iphdr的声明就是这样的代码的例子。 我不明白为什么比特序列是一个问题。 据我所知,位域是纯粹的编译器构造,用于方便位级操作。 例如,考虑下面的位域: struct ParsedInt { unsigned int f1:1; unsigned int f2:3; unsigned int f3:4; }; uint8_t i; struct ParsedInt * d =&i; 在这里,写d->f2只是一个简洁而可读的说法(i>>1) & (1<<4 – 1) 。 但是,位操作是精确定义的,而且不pipe架构如何。 那么,怎么来的位域是不可移植的?

不能运算符==应用于C#中的genericstypes?

根据MSDN中 ==运算符的文档, 对于预定义的值types,如果操作数的值相等,则相等运算符(==)返回true,否则返回false。 对于string以外的引用types,如果其两个操作数引用同一个对象,则==返回true。 对于stringtypes,==比较string的值。 用户定义的值types可以重载==运算符(请参阅运算符)。 因此,用户定义的引用types,尽pipe默认情况下==的行为如上所述的预定义和用户定义的引用types。 那么为什么这段代码片段无法编译? void Compare<T>(T x, T y) { return x == y; } 我得到错误运算符'=='不能应用于types'T'和'T'的操作数 。 我不知道为什么,因为据我所知, ==运算符是预定义的所有types? 编辑:谢谢大家。 起初我没有注意到这个陈述只是关于参考types。 我还认为,所有值types都提供了逐位比较,现在我知道这是不正确的。 但是,如果我使用引用types, ==运算符是否使用预定义的引用比较,或者如果types定义了运算符,它会使用运算符的重载版本吗? 编辑2:通过试验和错误,我们了解到,当使用不受限制的genericstypes时, ==运算符将使用预定义的引用比较。 实际上,编译器会使用它可以find的限制types参数的最好的方法,但是不会再看。 例如,即使在Test.test<B>(new B(), new B())时,下面的代码将始终显示为true : class A { public static bool operator==(A x, A y) { return true; } } class B : A […]

round()用于C ++中的float

我需要一个简单的浮点舍入函数,因此: double round(double); round(0.1) = 0 round(-0.1) = 0 round(-0.9) = -1 我可以在math.h中findceil()和floor() ,但不是round() 。 它以另一个名字出现在标准的C ++库中,还是缺less?

使用std命名空间

对std命名空间使用'using'似乎有不同的看法。 有人说使用“ using namespace std ”,其他人说,不要,而是前缀std函数与' std:: '使用,而其他人说使用这样的东西: using std::string; using std::cout; using std::cin; using std::endl; using std::vector; 用于所有要使用的std函数。 各有什么优点和缺点? |

如何在.NET中格式化string中的花括号(大括号)

如何使用string.Format方括号。 例如: String val = "1,2,3" String.Format(" foo {{0}}", val); 这个例子不会引发exception,而是输出stringfoo {0} 有没有办法摆脱括号?

在C ++程序中以编程方式检测字节序

有没有一个程序化的方法来检测你是否在大端或小端架构? 我需要能够编写将在Intel或PPC系统上执行的代码,并使用完全相同的代码(即无条件编译)。