标签: standard-library

空容器中back()的地址是什么?

我错误地将back()操作员返回的引用的地址放在一个空容器中,并且惊讶地发现该地址不为零.

如果一个容器例如std :: deque为空,那么back()返回什么?

c++ containers standard-library

0
推荐指数
1
解决办法
201
查看次数

标准库中是否有跨平台标头,可以访问当前时间?

可能是一个愚蠢的问题,但我找不到任何搜索...

是否有标准标题允许我获取当前时间?否则是否有一些跨平台的替代方案?

c++ time cross-platform standard-library

0
推荐指数
1
解决办法
266
查看次数

C++标准模板库矢量问题

有人能用英语解释这里发生了什么吗?

std::vector<Cat*> cats; //I get that cats is a vector of Cat objects

if (std::find(cats.begin(), cats.end(), morris) == cats.end()) {
   cats.push_back(morris);
}
Run Code Online (Sandbox Code Playgroud)

c++ vector standard-library

0
推荐指数
1
解决办法
171
查看次数

如何比较c中的字符

我有一个小项目,我需要比较一个流的第一个字节.问题是该字节可以是0xe5或任何其他不可打印的字符,因此表示该特定数据是坏的(一次读取32位).我可以允许的有效字符是AZ,az,0-9,'.' 和空间.

目前的代码是:

FILE* fileDescriptor; //assume this is already open and coming as an input to this function.
char entry[33];

if( fread(entry, sizeof(unsigned char), 32, fileDescriptor) != 32 )
{
    return -1; //error occured
}

entry[32] = '\0';  //set the array to be a "true" cstring.

int firstByte = (int)entry[0];

if( firstByte == 0 ){
    return -1;    //the entire 32 bit chunk is empty.
}

if( (firstByte & 0xe5) == 229 ){       //denotes deleted.
    return -1;    //denotes deleted.
}
Run Code Online (Sandbox Code Playgroud)

所以问题在于,当我尝试执行以下操作时: …

c linux c-strings cstring standard-library

0
推荐指数
1
解决办法
1896
查看次数

编译器提供的C运行时库如何说gcc alllow不同的函数参数和返回类型 - float,double,long double?

当我在Linux上看到man sqrt时,我看到了3个函数的原型 -

double sqrt(double x);    
float sqrtf(float x);    
long double sqrtl(long double x);
Run Code Online (Sandbox Code Playgroud)

如果编译器/库是用C++编写的,我理解它可能正在使用函数重载.

如果提供它的编译器库是用C编写的,那么编译器(gcc)如何实现这种事情,就像C不支持的函数重载一样?(或者是否像C99这样的某些后来的C标准确实支持这样的东西?)

gcc实现了哪种编程语言?

c compiler-construction standard-library

0
推荐指数
1
解决办法
278
查看次数

具有范围/代码块的互斥锁/锁定

我记得在某个会议上看过它,但找不到任何相关信息.

我想要的东西:

lock(_somelock)
{
    if (_someBool)
        return;

    DoStuff();
} // Implicit unlock
Run Code Online (Sandbox Code Playgroud)

代替:

lock(_somelock);
if (_someBool)
{
    unlock(_somelock);
    return;
}

DoStuff();
unlock(_somelock);
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,代码变得非常臃肿,有多个早期返回.显然,人们可以制作另一个功能来处理锁定/解锁,但它更好吗?

可以使用C++ 11标准库吗?

c++ multithreading mutex standard-library c++11

0
推荐指数
1
解决办法
197
查看次数

有C++标准库ifdef或ifndef预处理器指令吗?

我正在用C++构建自己的终端应用程序项目,我问自己标准库是否有ifdef或ifndef预处理器指令.我想知道,因为我需要创建不同的头文件,需要一些标准库头文件,如"字符串"和其他一些,我不想包括相同的库3次或更多次,因为它使程序更重.
例如,我在我的头文件上写了这样的东西,以防止.h文件被包含多次:

#ifndef myheader_h
#define myheader_h
    // my file code here
#endif
Run Code Online (Sandbox Code Playgroud)

我尝试编译,但编译器没有说错误或警告.
我还尝试阅读标准库源代码(https://en.cppreference.com/w/cpp/header),但我没有找到任何预处理器规则,如ifdef或ifndef.
我应该包括这样的标准库标题吗?

#ifndef string_h
#define string_h
    #include <string>
#endif
Run Code Online (Sandbox Code Playgroud)

我希望我的问题还没有被问到,因为我在搜索时没有找到它.

更新

对于那些说"你不在你需要担心的位置"的人,以及谁说"如果它有适当的包括警卫就花费很少",我的意思是:程序的沉重很重要,我想让它变得更轻松所以我不想多次完全包含同一个文件.有std lib文件正确包含警卫吗?(我的头文件有它们,不知道std lib文件)

c++ preprocessor standard-library

0
推荐指数
1
解决办法
699
查看次数

iscntrl 的行为是什么?

功能iscntrl标准化。不幸的是,在 C99 上我们有:

iscntrl 函数测试任何控制字符

考虑到原型,int iscntrl(int c);我期待true0..31 或 127 之类的东西。然而在以下情况中:

#include <stdio.h>
#include <ctype.h>
int main()
{
    int i;
    printf("The ASCII value of all control characters are ");
    for (i=0; i<=1024; ++i)
    {
        if (iscntrl(i)!=0)
            printf("%d ", i);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

The ASCII value of all control characters are 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
 15 16 17 18 19 20 21 …
Run Code Online (Sandbox Code Playgroud)

c character standard-library

0
推荐指数
1
解决办法
183
查看次数

std :: find如何自动地知道C++中数组的结尾?

为什么下面的代码中有一个原子变量? - 因为它是更大的代码库的一部分,其中m_subscriptions数组是从多个线程更新的.请跟我一起 ..

这是我的问题:

#include <iostream>
#include <atomic>
#include <algorithm>
#include <iterator>


#define MAX_SUBSCRIPTIONS 45

static std::atomic<int> numberOfSubscriptions;

int main ()
{
    int m_subscriptions[MAX_SUBSCRIPTIONS] = {};
    numberOfSubscriptions.fetch_add(0, std::memory_order_relaxed);

    m_subscriptions[numberOfSubscriptions] = 12;
    numberOfSubscriptions.fetch_add(1);
    m_subscriptions[numberOfSubscriptions] = 13;
    numberOfSubscriptions.fetch_add(1);
    m_subscriptions[numberOfSubscriptions] = 14;
    numberOfSubscriptions.fetch_add(1);
    m_subscriptions[numberOfSubscriptions] = 15;
    numberOfSubscriptions.fetch_add(1);
    m_subscriptions[numberOfSubscriptions] = 16;
    numberOfSubscriptions.fetch_add(1);

    for ( int i = 0; i < numberOfSubscriptions; i++ )
        std::cout << m_subscriptions[ i ] << "\t "; 

    std::cout << std::endl;

    auto result = std::find(m_subscriptions, m_subscriptions + numberOfSubscriptions, 44);

    if …
Run Code Online (Sandbox Code Playgroud)

c++ arrays stl standard-library

-1
推荐指数
1
解决办法
121
查看次数

C标准库函数'strncpy'无法正常工作

C代码:

#include<stdio.h>
#include<string.h>

#define STRINGS 10
#define STR_LEN 20

int main(void)
{
    char words[STRINGS][STR_LEN];

    char input[STR_LEN];

    int i;
    int mycount;

    for(i = 0;i < STRINGS;++i;)
    {
        printf("Enter a word (or 0 to quit)\n:");

        scanf("%19s", input);

        if(input[0] == '0') break;

        strncpy(words[i], input, STR_LEN);

        mycount++;
    }

    printf("A total of %d strings were entered!\n",mycount);

}
Run Code Online (Sandbox Code Playgroud)

问题:当我运行此代码并输入一些字符串时,它不会打印出我输入的字符串数量

在此输入图像描述

c c-strings standard-library

-1
推荐指数
1
解决办法
179
查看次数

将自己的函数包含到 ANSI C 标准库的过程

如何将自己的编程函数包含到标准 C (ANSI C) 库中?任何正在学习或从事 C 语言工作的人都可以随时随地使用这些功能,一般不需要开发。

示例:有人开发了名为“FunFun()”的函数,并假设它对大多数程序员来说都非常有用。那么,如何在不开发且仅包含标准库的情况下访问这个“FunFun”功能呢?

c function standard-library ansi-c

-6
推荐指数
1
解决办法
671
查看次数