小编Use*_*ess的帖子

设置千位分隔符格式

我正在 Visual Studio 2010 中使用 MFC 进行 C++ 编程。

我住在欧洲,所以我的电脑区域设置不是美国而是欧洲。

我使用 CString 的 .Format 函数来打印计算结果,并且我想添加一个小数点作为百位和千位之间的分隔符。

例如,我想显示 23.400 而不是 23400

是否可以使用特定的 % 格式,或者我必须更改电脑的设置?

谢谢您的帮助

c++ mfc

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

在通用编程中选择类型参数

我在cpp ref中遇到过这段代码

template<
    class T,
    class Container = std::vector<T>,
    class Compare = std::less<typename Container::value_type>
> class priority_queue;
Run Code Online (Sandbox Code Playgroud)

typename Container::value_type在上述声明中使用的目的究竟是什么?以下不起作用吗?

template<
    class T,
    class Container = std::vector<T>,
    class Compare = std::less<T>
> class priority_queue;
Run Code Online (Sandbox Code Playgroud)

c++ stl typename

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

C++ 中两个迭代器的减法如何表示向量项的索引?

在 GeeksForGeeks 的一篇博文中,两个迭代器的减法被用来表示向量的索引。该帖子的链接:

C++ 中的 std::find

我也在stackoverflow上看到过相关的答案:

如何在 C++ 中将向量迭代器转换为 int

但它没有用一个很好的例子来描述该机制,所以我对此感到困惑。因为,我无法分别打印迭代器v.begin()it,而我可以打印它们的减法值( it - v.begin() )

那么,减法如何表示向量项的索引呢?

c++ iterator vector

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

char []和sprintf分段错误

这是我的程序的剥离版本.我不明白为什么我在这里得到分段错误.

....
int main(int argc, const char * argv[])
{
    char quit = 0;
    char buffer[100];
    ...
    while (quit == 0) {
        sprintf(buffer,"%s",get_timer_ticks(&mytimer));
        // puts(buffer);
...
}
Run Code Online (Sandbox Code Playgroud)

编辑:顺便说一句,get_timer_ticks返回Uint32.

c printf char segmentation-fault

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

为什么不消除关于这个结构填充字节的需要?

考虑以下简单结构:

struct Struct {
public:
  char  a;
  short int b;
  char  c;
};
Run Code Online (Sandbox Code Playgroud)

如果此结构的实例放置在偶数(16位对齐)地址,则需要两个填充字节来修复对齐(对于b数组中的任何后续实例都是如此).

但是,实例可以放在奇数地址,然后即使没有填充字节,对齐仍然是正确的.

所以我做了一个测试并观察到Visual C++ 2010将添加这两个填充字节,这表明它总是将它们放在偶数地址.

为什么VC++不会将它们放在奇数地址上,每个对象节省2个字节?有什么我不知道的吗?

c++ padding visual-studio-2010 memory-alignment visual-c++

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

reinterpret_cast <double**> SEG故障

我正在尝试以下代码用于多维数组.它给出SEG错误我不知道这是什么问题.

 static void read(double **arr){
  //REQ arr to be pointing to  array[5][4] 
  //EFF prompt the use to input the data
  //Mod array pointer by **arr
       int i(0) , j(0);
       double tmp ;


       for(i=0 ; i<4 ; i++){

            for(j=0 ; j<5 ; j++) {
                cout <<"Please enter Data#"<<  (j+1) << " File#" << (i+1)  <<" "<<flush;

                cin >> tmp ; 
                arr[j][i] = tmp ;
            }   

        }

        return ; 
    }


int main(){
 double arr[5][4] ;
 read(reinterpret_cast<double**>(arr) ) ;
}
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

c++ pointers multidimensional-array

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

这部分代码的含义是什么?

有人可以说这段代码是什么意思吗?

void (* const rvt[])(void) = {
  (void (*) (void))((unsigned long)&__STACK_END), // The initial stack pointer
  xkg_som,                                  // The reset handler
  xnt_ISR,                                  // The NMI handler
  FaultISR,                                 // The hard fault handler
  IntDefaultHandler,                        // The MPU fault handler
  bgs_stm,                                  // The bus fault handler
  IntDefaultHandler,                        // The usage fault handler
  0,                                        // Reserved
  0,                                        // Reserved
  IntDefaultHandler,                        // The MPU fault handler
};
Run Code Online (Sandbox Code Playgroud)

我实际上不明白.

c c++

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

了解C ++中的const_cast

我想了解const_cast

在下面的示例中,items_是一个私有成员变量。

方法getItems()是一种const方法,这意味着它不能修改成员变量items_

getItems()返回一个const vector引用,这意味着您不能修改成员变量items_

我的问题是,const_cast在这里有必要吗?我不这样认为,因为我不需要放弃常数性?

#include <iostream>

class test {  
  std::vector<Item> items_;
public:
  const std::vector<Item>& getItems() const;
};

const std::vector<mv::Item>& mv::Workloads::getItems() const
{
  return const_cast<std::vector<Item>&>(items_);
}
Run Code Online (Sandbox Code Playgroud)

c++ casting

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

结构的变量值在c中自动更改

我在主函数中用7初始化了q.size,然后首先将q.size的值打印为7,但是在scanf()语句后,q.size的值变为0。为什么会这样以及如何解决呢?

#include <stdio.h>
#include <stdlib.h>
struct sample
{
    int size;
    int rear;
    int front;
};

int main()
{
     struct sample q;
     q.size=7;
     char Ans;

     printf("%d\n",q.size);

     printf("Enter character : (y/n)");
     scanf("%s",&Ans);

    printf("%d",q.size);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

来自scanf()后的q.size的预期结果为7实际结果为0

c

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

如何使用 O(n) 算法在 C 中就地分区数组?

我想对整数数组进行分区,以便负值位于正值的左侧,并且我想就地执行此操作(无需额外的辅助内存)。请注意,数组不能从小到低排序,只需将负数收集到左侧,将正数收集到右侧。

我创建了一个时间复杂度为 O(n^2) 的朴素函数,但想知道如何在线性时间内解决它?我的算法使用两个指针,开始指向数组的最左边和最右边的元素。当 ptr1 遇到正值,而 ptr2 遇到负值时,我们执行交换,指针向右/向左迭代,当它们相遇时,函数返回,因为数组已完成收集。

你能帮我想出一个更简单的算法来进行这种收集吗?

int* swaps(int* array){

    int* ptr1;
    ptr1 = &array[0];
    int* ptr2;
    ptr2 = &array[N-1];
    int tmp;


    for(ptr1; ptr1 <= &array[N-1]; ptr1++){
         if(ptr1==ptr2){
             return array; 
         }
         if(*ptr1 >= 0){
             for(ptr2; ptr2 >= &array[0]; ptr2--){
                if(ptr1==ptr2){
                  return array; 
                }

                // swap elements
                if(*ptr2 < 0){
                tmp = *ptr2;
                *ptr2 = *ptr1;
                *ptr1 = tmp;
                ptr2--;
                if(ptr1==ptr2){
                   return array; 
                }
                break;
                }
             }
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

c arrays sorting algorithm complexity-theory

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