小编sha*_*oth的帖子

为什么在使用当前时间格式化DateTime时会得到2555年?

我有C#代码执行以下操作:

 DateTime now = DateTime.UtcNow;
 string timeToOutput = now.ToString();
 String pathInStorage = now.ToString("yyyy-MM-dd/HH/");

 CloudBlobClient client = getClient();
 CloudBlobContainer container = client.GetContainerReference(hardcodedContainerName);
 container.GetBlobReference(pathInStorage).UploadText(timeToOutput);
Run Code Online (Sandbox Code Playgroud)

如您所见,我首先获取当前时间,然后使用不同的格式字符串将其格式化两次.现在大多数情况下,存储中的路径将与输出到blob本身的时间相匹配.

然而,有时(非常罕见)blob的时间将是2012年(如2012年10月29日12:33:00),但路径将包含2555年和小时 - 月 - 月将匹配blob内的时间(喜欢2555-10-29-12).

怎么会发生这种情况?

.net c# datetime azure azure-storage

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

是否使用未初始化的变量合法初始化变量?

以下C++代码是合法的:

char* ptr;
Run Code Online (Sandbox Code Playgroud)

而以下不是(使用未初始化的变量是UB):

ptr++;
Run Code Online (Sandbox Code Playgroud)

请问以下代码:

char* ptr2 = ptr;
Run Code Online (Sandbox Code Playgroud)

是合法的还是未定义的行为?

c++ initialization language-lawyer

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

MPI:锁定标准输出-一次1个进程?

我想打印出每个进程的整数数组的内容。问题是,由于比赛条件,一切都很混乱。

什么是最简单的解决方案?我不想调试。我想显示内容,因为我正在执行排序算法。因此在排序前后显示很有用。

我在lock.c中添加了它:

#include <stdio.h>
static int lock=0;   //Don't use if timing execution
void capture(int rank) {
    while(lock!=0);
    lock = 1;
    printf("\nCaptured by %d\n", rank);
}
void release() {
    lock = 0;
}
Run Code Online (Sandbox Code Playgroud)

并在打印内容之前调用capture(),然后在打印之后调用release()。是的,这是一个类似信号量的hack。但这行不通,有什么主意吗?

c synchronization mpi

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

指针模板清除功能的向量无法使用"未定义的引用"消息进行编译

对于我的程序,我做了一个小函数来清除我所拥有的各种std ::指针向量.

template <class S>
void clearPtrVector(std::vector<S*> &a,int size)
{
    for(size_t i = 0; i < size; i++)
         delete a[i];

    a.clear();
}
Run Code Online (Sandbox Code Playgroud)

我必须在这里做错了,因为在析构函数中调用此函数是这样的:

clearPtrVector(neurons,neurons.size());
Run Code Online (Sandbox Code Playgroud)

我两次得到以下未定义的引用:

undefined reference to `void clearPtrVector<Neuron>(std::vector<Neuron*,std::allocator<Neuron*> >&, int)'
Run Code Online (Sandbox Code Playgroud)

我不得不承认我不熟悉std :: allocator是什么,所以我无法猜出这里可能出现的问题.任何帮助都非常感谢.提前致谢!

-Lefteris

c++ templates stl stdvector

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

克服C++中错误的内存分配

在C++程序中,我写道:

#include<iostream>
#include<vector>
using namespace std;
int main()
{
   vector<int> a;
   a.resize(1); 
   for( int i = 0 ; i < 10 ; i++ ) {
       cout << a[i] << " ";
   }

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

此程序打印[0]的正确值(因为它已分配),但也会在10个位置的其余位置打印值,而不是给出分段错误.

如何在编写代码时克服这个问题?当您的代码计算某些内容并愉快地访问不应访问的内存时,这会导致问题.

c++ memory-management stl

0
推荐指数
3
解决办法
494
查看次数

消除回归功能

如何消除多个返回语句到一个语句.例如:我有一个if子句,if子句的结果为true,它将返回0.或返回1,如果包含另一个if子句则相同的else.它还有返回值.我怎样才能将这四个回报陈述归为一个?

这是该计划

if (IgC == true)
        {
            if (val1.ToUpper() == val2.ToUpper())
            {
                return 0;
            }
            else
            {
                return 1;
            }
        }

        else
        {
            if (val1 == val2)
            {
                return 0;
            }

            else
            {
                return 1;
            }
        }
Run Code Online (Sandbox Code Playgroud)

c#

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

当static_cast和reinterpret_cast具有相同的效果时,使用哪一个?

可能重复:
在将void*转换为任何内容时,我应该使用static_cast还是reinterpret_cast

通常,特别是在Win32编程中,需要从一个opaque类型转换为另一个opaque类型.例如:

 HFONT font = cast_here<HFONT>( ::GetStockObject( SYSTEM_FONT ) );
Run Code Online (Sandbox Code Playgroud)

static_cast和reinterpret_cast都适用于此并且具有完全相同的效果,因为HFONT是指向用于定义HFONT的虚拟结构的指针,而GetStockObject()返回的HGDIOBJ是一个void*指针.

哪一个 - static_cast或reinterpret_cast - 更可取?

c++ winapi casting

0
推荐指数
2
解决办法
1852
查看次数

END_COM_MAP中IUnknown成员函数的用途是什么?

ATL END_COM_MAP宏定义如下:

#define END_COM_MAP() \
    __if_exists(_GetAttrEntries) {{NULL, (DWORD_PTR)_GetAttrEntries, _ChainAttr }, }\
    {NULL, 0, 0}}; return _entries;} \
    virtual ULONG STDMETHODCALLTYPE AddRef( void) throw() = 0; \
    virtual ULONG STDMETHODCALLTYPE Release( void) throw() = 0; \
    STDMETHOD(QueryInterface)(REFIID, void**) throw() = 0;
Run Code Online (Sandbox Code Playgroud)

它旨在用于从COM接口继承的类的定义中,例如:

class ATL_NO_VTABLE CMyClass :
    public CComCoClass<CMyClass, &MyClassGuid>,
    public CComObjectRoot,
    public IMyComInterface
{
public:
    BEGIN_COM_MAP( CMyClass )
        COM_INTERFACE_ENTRY( IMyComInterface)
    END_COM_MAP()
};
Run Code Online (Sandbox Code Playgroud)

这意味着QueryInterface(),AddRef()和Release()在此类中声明为纯虚拟.由于我没有定义它们的实现,因此该类应该是不可创建的.然而ATL成功实例化了它.

它是如何工作的以及为什么这些IUnknown成员函数在这里被重新声明?

c++ com atl visual-c++

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

是否可以在不重新启动Visual Studio的情况下编译32位和64位配置?

目前,Visual Studio刚刚开始cl.exe进行C++源代码编译.cl.exe需要位于%PATH%环境变量中列出的文件夹之一.

由于在编译64位项目之后为了编译32位项目而存在用于32位和64位编译的单独版本的cl.exe,因此必须重新启动Visual Studio.

典型的解决方案是有两个.cmd文件,每个文件适当地设置%PATH%,然后启动Visual Studio.是否有一个不需要重新启动Visual Studio的解决方案?

c++ 64-bit visual-studio-2008 visual-studio visual-c++

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

递归连接以null结尾的字符串

我发明了面试问题,需要分析C ++代码,这些代码对指针和递归的操作很简单。我试图以strcat()递归方式编写:

size_t mystrlen( const char* str )
{
    if( *str == 0 ) {
        return 0;
    }
    return 1 + mystrlen( str + 1 );
}

void mystrcpy( char* to, const char* from )
{
    if( ( *to = *from ) == 0 ) {
        return;
    }
    mystrcpy( to + 1, from + 1 );
}

void mystrcat( char* to, const char* from )
{
    mystrcpy( to + mystrlen( to ), from );
}
Run Code Online (Sandbox Code Playgroud)

我在这里不喜欢的是我有三个函数,而且我strcat()不是很递归-它只调用另外两个函数。有没有一种方法可以重写它,从而减少函数的数量,从而增加递归的使用,但又不牺牲太多的代码简洁性?

c c++ string recursion

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