小编Gya*_*ain的帖子

了解对象是否为整数或类类型有什么意义?

您好,我在Cppreference.com上看到了许多这样的示例:

std::is_class<T>
std::is_integral
Run Code Online (Sandbox Code Playgroud)

等等。我知道我是否例如运行代码get truefalse。但是,这有什么意义呢?例如知道对象是否为类类型?

#include <iostream>
#include <type_traits>

struct A {};
class B {};
enum class C {};

int main()
{
    std::cout << std::boolalpha;
    std::cout << std::is_class<A>::value << '\n';
    std::cout << std::is_class<B>::value << '\n';
    std::cout << std::is_class<C>::value << '\n';
    std::cout << std::is_class<int>::value << '\n';
}
Run Code Online (Sandbox Code Playgroud)

输出:

true
true
false
false
Run Code Online (Sandbox Code Playgroud)
  • 我已经使用这个找遍了一个真实的例子(is_classis_integralis_arithmetic,...),但所有的教程只显示无望例如:只truefalse

  • 有人能帮我举一个使用此模板的有用示例吗?

c++ templates

15
推荐指数
2
解决办法
380
查看次数

为什么endl(std :: cout)编译

令人惊讶的是,下面的代码在各种编译器和版本上编译和运行时没有错误.

#include <iostream>

int main() {
    endl(std::cout);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Ideone链接

它是如何编译的?我确信endl在全球范围内没有,因为代码就像

std::cout << endl;
Run Code Online (Sandbox Code Playgroud)

除非using使用或你需要,否则会失败std::endl.

c++ argument-dependent-lookup

13
推荐指数
1
解决办法
910
查看次数

外部声明,T*v/s T []

我在遗留项目中看到了以下代码段.

/* token.c */
struct token id_tokens[MAX_TOKENS];

/* analyse.c (v1) */
extern struct token *id_tokens; /* Raised my eyebrow, id_token declares a pointer */
Run Code Online (Sandbox Code Playgroud)

我坚持要改变analyse.c以包含如下声明:

/* analyse.c (v2) */
extern struct token id_tokens[]; /* I am happy with this. id_tokens declares array of unspecified size. */
Run Code Online (Sandbox Code Playgroud)

我想v2因为pointer to T不一样array of T.我朋友的反驳说,两者的行为都是一样的,所以我使用v1和v2并不重要.

问题1:不完整类型的数组是否耗尽指针?

问题2:我的朋友是对的,两个版本在行为上都保证是等价的吗?

c declaration extern language-lawyer

8
推荐指数
2
解决办法
341
查看次数

在宏中将“int”作为参数传递

这一直困扰着我一段时间,我在用 C 解决一些客观类型的问题时遇到了这个问题。

#define SWAP(a,b,c) c t;t=a;a=b;b=t;

int main() {
    int x=10,y=20;
    SWAP(x,y,int);     
}
Run Code Online (Sandbox Code Playgroud)

代码给出了正确答案: 工作代码

在 C 中,我们应该只传递一个数据类型作为参数。这应该在这里工作,但我想知道如何。还有两个与此相关的问题:

  1. 如果我想使用指针交换,它会起作用吗
  2. 如果 SWAP 被定义为函数而不是宏,这是否有效。

c c++ macros

5
推荐指数
1
解决办法
2602
查看次数

在Visual Studio中使用freopen()时,c ++系统("暂停")不起作用

我试图从vs17中的文件中读取.但这里系统("暂停")不起作用.这里的控制台窗口弹出并消失.input.txt文件只包含一个整数.

#include<iostream>
#include<stdio.h>
#include<cstdio>
#pragma warning(disable:4996)
using namespace std;
int main()
{
    freopen("input.txt", "r", stdin);
    int n;
    cin >> n;
    cout << n << endl;
    system("pause");
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

那么有没有办法从文件中读取并在控制台中显示输出,直到给出键盘的另一个输入.提前致谢

c++ visual-c++ freopen

3
推荐指数
1
解决办法
1000
查看次数

打印字符串,结尾无填充0

我正在尝试以"Hello"二进制形式打印字符串。

我可以使用它,但是,我希望它打印时不带填充垫

所以

  01001000 01100101 01101100 01101100 01101111
Run Code Online (Sandbox Code Playgroud)

代替

  01001000 01100101 01101100 01101100 01101111 00000000
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

char t[] = "Hello";

for (int j = 0; j < sizeof(t); j++)
{
    unsigned char c = t[j];

    for (int i = 7; i >= 0; i--) {
        printf("%d", (c >> i) & 1 ? 1 : 0);
    }

    printf(" ");

}
Run Code Online (Sandbox Code Playgroud)

c bit-manipulation c-strings

3
推荐指数
1
解决办法
235
查看次数

如何将数字存储在结构数组中

嘿,所以我有下面的字符串:

char teststring[50] = "A 1.0 2.0 3.0 4.0";
Run Code Online (Sandbox Code Playgroud)

我有很多这种格式的字符串,我只需要将数字(而不是字母)存储在一起。所有数字都是相关的,因此我一直在尝试制作结构数组,但遇到了一些麻烦。我像这样设置结构(命名为wall.h文件并将其包含在主文件中)

struct example{
    double x1;
    double y1;
    double x2; 
    double y2;
};
Run Code Online (Sandbox Code Playgroud)

然后使用声明14个结构的数组

struct example ex[14];
Run Code Online (Sandbox Code Playgroud)

然后我试图用它来扫描字符串中的值并将它们存储在数组的第一个结构中

sscanf(teststring, "A %f %f %f %f", &ex[0].x1, &ex[0].y1, &ex[0].x2, &ex[0].y2);
Run Code Online (Sandbox Code Playgroud)

但是它似乎不起作用,并告诉我当我打印时该值为0.00000,而不是1.0

c arrays double struct scanf

2
推荐指数
1
解决办法
67
查看次数

算术运算给出了错误的结果

我可能会遗漏一些非常基本的东西.但我不知道如何找出基本的东西.当我将T设置为10并且dt设置为0.1时,我应该得到结果101但是我得到结果为100.为什么会这样?

n_sim_steps = (int)(T/dt) + 1
Run Code Online (Sandbox Code Playgroud)

此外,如果我在eclipse中将其作为手表执行,则返回101,但在代码中它会产生100.

c c++ eclipse-cdt

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

创建db时出现sqlite异常

我试图使用以下sqlite查询创建表.

private static final String CREATE_EMPLOYEE_TABLE = "CREATE TABLE " + TABLE_EMPLOYEE + "("
            + KEY_DOMAIN_ID + " INTEGER PRIMARY KEY,"
            + KEY_FROM + " TEXT,"
            + KEY_TO + " TEXT" + ")";

private static final String CREATE_GROUPS_TABLE = "CREATE TABLE " + TABLE_GROUPS + "("
        + KEY_USERID + " INTEGER PRIMARY KEY,"
        + KEY_NAME + " TEXT,"
        + KEY_SESSION_TOKEN + " TEXT,"
        + KEY_GROUP_ID + " TEXT,"
        + KEY_GROUP_NAME + " TEXT" + ")";`
Run Code Online (Sandbox Code Playgroud)

我使用以下代码向db添加元素,

db.addEmployees(new Employee(id,from,to));
db.addGroup(new Group(Integer.valueOf(userId),name,session,groupId,groupName)); …
Run Code Online (Sandbox Code Playgroud)

android sqliteopenhelper

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