找到 7345 篇文章 关于 C++

什么是 C/C++ 中的段错误?

Priya Pallavi
更新于 2020-01-27 12:35:13

9K+ 阅读量

段错误发生在程序试图访问它无权访问的内存区域时。换句话说,当程序试图访问超出操作系统为其分配的内存限制的内存时。段错误大多是由指针引起的,这些指针 - 未正确初始化。在它们指向的内存被重新分配或释放后使用。在索引数组中使用,其中索引超出数组边界。

如何在 C/C++ 中调试核心文件?

Ankith Reddy
更新于 2020-06-24 06:17:58

348 阅读量

当进程因程序故障而被操作系统终止时,它会转储核心文件。发生这种情况的最典型原因是程序访问了无效的指针值,例如 NULL 或其内存区域之外的某些值。作为该进程的一部分,操作系统尝试将我们的信息写入文件,以便我们分析发生了什么。此核心文件可以按如下方式用于诊断和调试我们的程序 - 默认情况下,核心文件转储到 /proc/sys/kernel 目录。要调试核心文件,程序必须使用 ... 阅读更多

C++ 中的 explicit 关键字是什么意思?

Nikitha N
更新于 2020-06-24 06:18:59

3K+ 阅读量

C++ 中的 explicit 关键字用于标记构造函数,使其不隐式转换类型。例如,如果您有一个 Foo 类 - class Foo { public:     Foo(int n); // 为 Foo 对象分配 n 个字节     Foo(const char *p); // 使用 char *p 初始化对象 };现在,如果您尝试 Foo mystring = 'x';字符 'x' 会隐式转换为 int,然后会调用 Foo(int) 构造函数。但这并非预期结果。因此,为了防止这种情况并使代码更不容易出错,将构造函数定义为 explicit - 示例 class Foo {    public:   ... 阅读更多

如何在 C++ 中将 int 转换为字符串?

George John
更新于 2020-06-24 06:19:44

3K+ 阅读量

您可以使用 C 中的 itoa 函数将 int 转换为字符串。示例 #include int main() {    int a = 10;    char *intStr = itoa(a);    string str = string(intStr);    cout

如何使用 C/C++ 获取目录中的文件列表?

Chandu yadav
更新于 2020-01-27 12:32:32

2K+ 阅读量

标准 C++ 没有提供执行此操作的方法。您可以使用 system 命令初始化 ls 命令,如下所示 - 示例 #include int main () {    char command[50] = "ls -l";    system(command);    return 0; }输出这将给出以下输出 - -rwxrwxrwx 1 root root  9728 Feb 25 20:51 a.out -rwxrwxrwx 1 root root   131 Feb 25 20:44 hello.cpp -rwxrwxrwx 1 root root   243 Sep  7 13:09 hello.py -rwxrwxrwx 1 root root 33198 Jan  7 11:42 hello.o drwxrwxrwx 0 root root   512 Oct  1 21:40 hydeout -rwxrwxrwx 1 root root    42 Oct 21 11:29 ... 阅读更多

C++ 中 "std::endl" 和 "" 有什么区别?

Srinivas Gorla
更新于 2019-07-30 22:30:22

323 阅读量

"" 输出一个换行符(以适当的平台特定表示形式,因此它在 Windows 上生成一个“\r”),但 std::endl 除了输出换行符外还会刷新流。通常,您不需要立即刷新流,这只会降低性能,因此,在大多数情况下,没有理由使用 std::endl。当您想要手动刷新流,因为您希望您的输出能够及时显示给用户(即没有延迟)时,您应该使用 std::endl 而不是将 '' 写入流。

段错误在 C++ 中实际上是未定义行为吗?

Arjun Thakur
更新于 2020-06-24 06:08:41

383 阅读量

未定义行为是一种赋予实现者(例如编译器或操作系统的实现者)和计算机做任何他们“想要”做的事情的自由,换句话说,是不关心后果。发生段错误的情况本质上是短暂的。它们不会总是导致段错误,但也可以正确运行(或至少看起来正确)。例如,考虑以下代码片段 - #include int main() {     int arr[2];     arr[0] = 0;     arr[1] = 1;     arr[2] = 2; // 未定义行为     arr[3] = 3; // 未定义行为 ... 阅读更多

使用 C++ STL 对自定义对象向量进行排序

Ankith Reddy
更新于 2020-02-12 06:19:23

12K+ 阅读量

您可以使用 C++ STL 函数 std::sort 对自定义对象向量进行排序。sort 函数有一个重载形式,它将 first、last 和 comparator 作为参数。first 和 last 是容器的第一个和最后一个元素的迭代器。comparator 是一个谓词函数,可用于说明如何对容器进行排序。示例 #include #include #include using namespace std; struct MyStruct {    int key;    string data;    MyStruct(int key, string data) {       this -> key = key;       this -> data = data;    } }; int ... 阅读更多

如何使用 POSIX 在 C++ 中执行命令并获取命令的输出?

Abhinanda Shri
更新于 2020-02-12 06:15:52

12K+ 阅读量

您可以使用 popen 和 pclose 函数在进程之间进行管道传输。popen() 函数通过创建管道、分叉和调用 shell 来打开一个进程。我们可以使用缓冲区读取 stdout 的内容并将其不断追加到结果字符串中,并在进程退出时返回此字符串。示例 #include #include #include #include using namespace std; string exec(string command) {    char buffer[128];    string result = "";    // 打开到文件的管道    FILE* pipe = popen(command.c_str(), "r");    if (!pipe) {       ... 阅读更多

为什么 C/C++ 中的 switch 语句中不能声明变量?

George John
更新于 2020-01-27 12:30:17

895 阅读量

可以在 switch 语句中声明变量。您只需要在 switch 语句中声明它们并在新的作用域中使用它们即可。例如,示例 #include using namespace std; int main() {    int i = 10;    switch(i) {       case 2:       // 一些代码       break;       case 10:{          int x = 13;          cout

广告
© . All rights reserved.