小编jro*_*rok的帖子

在"a"(追加)模式下打开文件时,fseek不起作用

FILE* f = fopen("rajat", "w");
fputs("sometext", f);
fseek(f, 6, SEEK_SET);
fputs("is a", f);
fclose(f);
Run Code Online (Sandbox Code Playgroud)

成功回归:"someteis a"

FILE* f = fopen("rajat", "a");
fputs("sometext", f);
fseek(f, 6, SEEK_SET);
fputs("is a", f);
fclose(f);
Run Code Online (Sandbox Code Playgroud)

不行.返回"sometextis a"

有什么想法吗?对此有什么解决方案,以便第二个代码输出与第一个完全相同?

c c++ file fseek

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

如何禁止C++派生类派生自base,但允许来自另一个派生类

鉴于这种情况:

class GrandParent {};
class Parent : public GrandParent {};
class Child : public Parent {}; /// Ok
class Child : public GrandParent {}; /// Is it possible to force a compilation error? 
Run Code Online (Sandbox Code Playgroud)

c++ inheritance

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

试图使用矢量qsort

我正在尝试学习c ++并尝试使用sort和qsort.sort()工作正常,但qsort没有,我不知道为什么,所以你可以帮助我,这是我试图编译的代码

#include<iostream>
#include<vector>
#include<cstdlib>
#include<ctime>
#include<algorithm>


using namespace std;

int compvar(const void *one, const void *two)
{
    int a = *((int*)one);
    int b = *((int*)two);
    if (a<b)
       return -1;
    if (a == b)
       return 0;
    return 1;   

}

void bvect(vector<int> &vec, int num)
{
     srand(time(NULL));
     for(int i=0; i<num; ++i)
             vec.push_back(rand()%1000 + 1);
}

void showvec(vector<int> vec)
{
     for (int i=0; i<vec.size(); ++i)
         cout<<vec[i]<<endl;
}


int main()
{
    vector<int>numbers;
    bvect(numbers, 1000);
    showvec(numbers);
    qsort(numbers.begin(), numbers.size(), sizeof(int), compvar);
    showvec(numbers);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ sorting vector qsort

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

对象切片是否有用?

当我们将派生类的对象分配或复制到其基类的对象时,会发生对象切片,从而在该过程中丢失它的派生部分.

这里有更深入的解释:C++中的切片问题是什么?.

(我自己,我不认为它是一个问题,而是语言价值语义的自然结果,但这不是这个问题的重点.)

我想知道的是:有没有你有意使用它的情况?这是一个"工作的正确工具"吗?

c++ inheritance object-slicing

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

结构中的差异?

有什么区别:

typedef struct part 
{
   int a;
} Part;
Run Code Online (Sandbox Code Playgroud)

typedef struct 
{
   int a;
} Part;
Run Code Online (Sandbox Code Playgroud)

我知道第二个是"匿名",但它们有什么不同吗?

c c++ data-structures

13
推荐指数
2
解决办法
452
查看次数

使用临时存储区复制简单的可复制类型:是否允许?

这个问题是对另一个问题答案的评论的后续跟进.


请考虑以下示例:

#include <cstring>
#include <type_traits>
#include <cassert>

int main() {
    std::aligned_storage_t<sizeof(void*), alignof(void*)> storage, copy;

    int i = 42;
    std::memcpy(&storage, &i, sizeof(int));

    copy = storage;

    int j{};
    std::memcpy(&j, &copy, sizeof(int));

    assert(j == 42);
}
Run Code Online (Sandbox Code Playgroud)

适用于(对某些作品的定义).但是,标准告诉我们这个:

对于任何对象平凡复制的类型的(比基类的其他子对象)T时,对象是否保持类型的有效的值T,构成对象的底层字节可以被复制到的阵列char,unsigned charstd?::?byte.
如果将该数组的内容复制回对象,则该对象应随后保持其原始值.[例如:

#define N sizeof(T)
char buf[N];
T obj;                          // obj initialized to its original value
std::memcpy(buf, &obj, N);      // between these two calls to std?::?memcpy, …
Run Code Online (Sandbox Code Playgroud)

c++ language-lawyer c++17

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

我对getline +字符串的理解是什么?

这是我第一次使用stackoverflow.我一直无法找到关于getline的所需信息.我是一个简单的工程转移编程类,所以我们编写的代码非常简单.我在这里尝试做的就是将用户定义的问题和答案放入两个不同的数组中.我的while循环看起来像这样(我正在使用for循环,但切换到只是为了看它是否会停止破坏):

int main ()
{
    srand((unsigned)time(0));
    string quest1[100], answ1[100];
    int size1, x = 0, num, count1, visit[100], shuffle[100];
    fstream flashcard1; 

    cout << "flashcard.cpp by NAME\n" << endl;
    cout << "This program allows user to manipulate questions and answers for studying.\n" << endl;
    cout << "\nHow many flash cards will be entered(MAX 100)? ";
    cin >> size1;
    cout << endl;

    while(x < size1)
    {
        cout << "Enter Question: ";
        getline(cin , quest1[x]);
        cout << endl;
        x = x++;

        /*
        cout << …
Run Code Online (Sandbox Code Playgroud)

c++ arrays string getline

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

将敏感数据存储在C++编译的二进制文件中是否安全?

众所周知,.NET生成的dll可以很容易地反编译.这意味着敏感信息(例如加密密钥)不应存储在.NET二进制文件中.

在(例如)可能由我的.NET代码使用的C++二进制文件中存储敏感数据是否是一种明智的替代方法?我还不知道互操作的东西,但我很好奇这是否是一个值得追求的途径.我想澄清一下,我的问题是:

  1. 用C++(或C)生成的二进制文件可以很容易地反编译来访问敏感的字符串数据吗?
  2. 这是一个完全没有思想的想法,要么是因为它不起作用,要么很难完成,要么是因为我还没有遇到过更好的替代方案?

.net c++ security decompiling binaries

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

奇怪的语法 - 参数包扩展中的两个省略号运算符

可能重复:
"......"令牌是什么意思?

在查看libc ++的标题时<type_traits>,我偶然发现了这些类模板特化:

template<typename>
    struct is_function
    : public false_type { };

template<typename _Res, typename... _ArgTypes>
    struct is_function<_Res(_ArgTypes...)>
    : public true_type { };

template<typename _Res, typename... _ArgTypes>
    struct is_function<_Res(_ArgTypes......)>    // <-- Huh?
    : public true_type { };
Run Code Online (Sandbox Code Playgroud)

有三个对特(的const,volatile并且const volatile变化),都以同样的方式.

它看起来像两个elipsis运算符组合在一起.我唯一能提到的就是cplusplus.com,它说它也可以用space(_ArgTypes... ...)或逗号(_ArgTypes..., ...)编写,但没有解释它的含义.

那么,这种语法意味着什么?像这样的专业化的目的是什么?

c++ variadic-templates c++11

6
推荐指数
0
解决办法
129
查看次数

使用std :: ofstream在c ++中格式化float变量输出

我有以下代码:

std::ofstream myfile;
std::stringstream filename3;
myfile.open("results.txt");

myfile << "precision= " << precision << "\n";
Run Code Online (Sandbox Code Playgroud)

我文件中的输出格式如下:

precision= 5.96e-07...
Run Code Online (Sandbox Code Playgroud)

如何将数值打印为数字而不是使用e表示的数值?

c++ format floating-point ofstream

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