Tag: C#的

为什么不是可变长度数组是C ++标准的一部分?

在过去的几年中,我并没有使用C语言。 当我今天看到这个问题时 ,我碰到了一些我不熟悉的C语法。 显然在C99中 ,以下语法是有效的: void foo(int n) { int values[n]; //Declare a variable length array } 这似乎是一个非常有用的function。 有没有关于将其添加到C ++标准的讨论,如果是的话,为什么它被省略? 一些潜在的原因: 供编译器厂商使用 与标准的其他部分不兼容 function可以与其他C ++结构模拟 C ++标准规定数组大小必须是一个常量expression式(8.3.4.1)。 是的,我当然知道,在玩具的例子中,可以使用std::vector<int> values(m); ,但是这从堆中分配内存而不是堆栈。 如果我想要一个multidimensional array,如: void foo(int x, int y, int z) { int values[x][y][z]; // Declare a variable length array } vector版本变得非常笨拙: void foo(int x, int y, […]

有没有办法检查一个文件是否正在使用?

我正在用C#编写一个需要重复访问1个图像文件的程序。 大多数情况下,它可以工作,但是如果我的电脑运行的很快,它会在文件保存回文件系统之前尝试访问文件,并抛出一个错误: “正被另一个进程使用的文件” 。 我想find一个解决这个问题的方法,但是我所有的Googlesearch都只能通过使用exception处理来创build检查。 这是违背我的宗教的,所以我想知道有没有人有更好的方法呢?

const int *,const int * const和int const *之间有什么区别?

我总是搞砸如何正确使用const int* , const int * const和int const * 。 有一套规则定义你可以做什么,不可以做什么? 我想知道所有的事情,所有的事情,任务,职能等等。

我如何正确比较string?

我试图让一个程序让用户input一个单词或字符,存储它,然后打印出来,直到用户重新input,退出程序。 我的代码如下所示: #include <stdio.h> int main() { char input[40]; char check[40]; int i=0; printf("Hello!\nPlease enter a word or character:\n"); gets(input); printf("I will now repeat this until you type it back to me.\n"); while (check != input) { printf("%s\n", input); gets(check); } printf("Good bye!"); return 0; } 问题在于,即使用户的input(check)与原始input(input)匹配,我也不断获得inputstring的打印。 我比较两个不正确?

scanf()将新的行字符留在缓冲区中

我有以下程序: int main(int argc, char *argv[]) { int a, b; char c1, c2; printf("Enter something: "); scanf("%d",&a); // line 1 printf("Enter other something: "); scanf("%d", &b); // line 2 printf("Enter a char: "); scanf("%c",&c1); // line 3 printf("Enter another char: "); scanf("%c", &c2); // line 4 printf("Done"); // line 5 system("PAUSE"); return 0; } 正如我在C书中读到的,作者说scanf()在缓冲区中留下了一个新的行字符,因此,程序不会停在第4行,以便用户input数据,而是将新的行字符存储在c2并移动到第5行。 […]

捕获的variables在C#中循环

我遇到了一个关于C#的有趣的问题。 我有像下面的代码。 List<Func<int>> actions = new List<Func<int>>(); int variable = 0; while (variable < 5) { actions.Add(() => variable * 2); ++ variable; } foreach (var act in actions) { Console.WriteLine(act.Invoke()); } 我期望它输出0,2,4,6,8。然而,它实际上输出了5个10。 这似乎是由于所有的行动都指向一个被捕获的variables。 因此,当它们被调用时,它们都具有相同的输出。 有没有办法绕过这个限制让每个动作实例都有自己的捕获variables?

如何在C ++中使用new声明一个二维数组?

我如何使用新的声明2d数组? 就像一个“正常”的arrays,我会: int* ary = new int[Size] 但 int** ary = new int[sizeY][sizeX] a)不工作/编译b)没有完成: int ary[sizeY][sizeX] 确实。

从fgets()input中删除尾随的换行符

我试图从用户获取一些数据,并将其发送到gcc中的另一个函数。 代码是这样的。 printf("Enter your Name: "); if (!(fgets(Name, sizeof Name, stdin) != NULL)) { fprintf(stderr, "Error reading Name.\n"); exit(1); } 不过,我发现最后还是换了一个换行符。 所以如果我inputJohn它最终发送John\n 。 如何删除\n并发送正确的string。

什么是在C#中parsingHTML的最佳方法?

我正在寻找一个库/方法来parsing一个HTML文件比通用的XMLparsing库更多的HTML特定的function。

如何在C ++中标记string?

Java有一个方便的拆分方法: String str = "The quick brown fox"; String[] results = str.split(" "); 有一个简单的方法来做到这一点在C + +?