小编mos*_*ear的帖子

boost :: scoped_ptr <T>和std :: unique_ptr <T>之间的区别

唯一的区别是移动语义boost::scoped_ptr<T>和移动语义std::unique_ptr<T>的事实,std::unique_ptr<T>boost::scoped_ptr<T>只是一个获取/重置智能指针?

c++ unique-ptr scoped-ptr

55
推荐指数
2
解决办法
3万
查看次数

如何在C++中将文件编码格式设置为UTF8

我的软件的要求是包含导出数据的文件的编码应为UTF8.但是当我将数据写入文件时,编码总是ANSI.(我使用Notepad ++来检查这个.)

我目前正在尝试通过读取文件,将其转换为UTF8并将文本写入新文件来手动转换文件.

linestd::string
inputFilestd::ifstream
pOutputFileFILE*

// ...

if( inputFile.is_open() )
{
    while( inputFile.good() )
    {
        getline(inputFile,line);

        //1
        DWORD dwCount = MultiByteToWideChar( CP_ACP, 0, line.c_str(), -1, NULL, 0 );
        wchar_t *pwcharText;
        pwcharText = new wchar_t[ dwCount];

        //2
        MultiByteToWideChar( CP_ACP, 0, line.c_str(), -1, pwcharText, dwCount );

        //3
        dwCount = WideCharToMultiByte( CP_UTF8, 0, pwcharText, -1, NULL, 0, NULL, NULL );
        char *pText;
        pText = new char[ dwCount ];

        //4
        WideCharToMultiByte( CP_UTF8, 0, pwcharText, -1, pText, dwCount, …
Run Code Online (Sandbox Code Playgroud)

c++ winapi utf-8 character-encoding

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

在std :: move存在时移动未使用的语义

具有以下内容:

#include <iostream>
#include <fstream>
using namespace std;
int main() {
    ifstream f;
    ifstream g;
    f = std::move(g);
}
Run Code Online (Sandbox Code Playgroud)

为什么被称为ifstream::operator=(const ifstream&)而不是ifstream::operator=(ifstream&&)即使std::move()被称为?

更新:一般来说,有没有办法强制左值引用到右值引用?

c++ noncopyable rvalue-reference c++11

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

虚拟功能的反直觉行为

特定

#include <string>
#include <iostream>


struct A  {
    virtual operator std::string() const { return "A"; }
    virtual operator const char *() const { return this->operator std::string().c_str(); }
};

struct B1 : public A {
    virtual operator std::string() const { return "<"; }
};

struct B2 {
    B2() { }
    virtual ~B2() { }
    virtual operator std::string() const { return ">"; }
    virtual operator const char *() const { return this->operator std::string().c_str(); }
};

struct C1 : public A {
    C1() …
Run Code Online (Sandbox Code Playgroud)

c++

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

Linux Socket重新读取旧数据

我正在编写一个Linux套接字程序,当我从套接字读取数据时,我的缓冲区中的先前读取中包含旧数据值.我正在使用read()调用,但我也尝试过recv(),两者都会导致同样令人沮丧的错误.以下是三个读取调用:

read(client_sock, &test, sizeof(test));

read(client_sock, &test2, sizeof(test2));

read(client_sock, &test3, sizeof(test3));

test,test2和test3都是char,并且正在尝试读取客户端写入的char值.任何帮助将不胜感激.

c linux

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

在哪些情况下,vtable结构不会发生?

我注意到在我的代码中由于某种原因没有发生虚拟覆盖.我正在广泛使用多态,以便我可以使用类似的构造derived.baseFunc(),其中baseFunc调用虚函数覆盖Derived.

在哪些情况下,vtable结构不会发生,多态行为变得不可靠?

注意:对于一个简单的情况,一切正常,因此不需要发布代码.

更新:vtable看起来很好.似乎有一个命名空间的clusterf**k可能是问题.此外,将代码复制粘贴到新文件并删除命名空间可以解决问题.

c++ vtable

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