小编ST3*_*ST3的帖子

哪一个更轻,JSON还是BSON?

我编写了将对象序列化为JSON和BSON的代码.根据我的输出,生成的BSON的大小比JSON大.这是预期的吗?

从我的代码Bson.class(使用杰克逊和bson4jackson)

private ByteArrayOutputStream baos = new ByteArrayOutputStream();
private BsonFactory fac = new BsonFactory();

private ObjectMapper mapper = new ObjectMapper(fac);

public Bson(Object obj) throws JsonGenerationException,
        JsonMappingException, IOException {
    mapper.writeValue(baos, obj);
}

public int size() {
    return baos.size();
}

public String toString() {
    byte[] bytes = baos.toByteArray();
    return new String(bytes);
}
Run Code Online (Sandbox Code Playgroud)

从我的 Json.class

private ByteArrayOutputStream baos = new ByteArrayOutputStream();
private ObjectMapper mapper = new ObjectMapper();

public Json(Object obj) throws JsonGenerationException,
        JsonMappingException, IOException {
    mapper.writeValue(baos, obj);
}
Run Code Online (Sandbox Code Playgroud)

(size()和 …

java json jackson bson

30
推荐指数
2
解决办法
6656
查看次数

是否可以定义另一个预处理器指令?

我一直在寻找代码高尔夫,并有一个想法尝试这个代码:

#define D #define 添加此行后,一切正常,但我将其扩展为:

#define D #define
D VALUE
Run Code Online (Sandbox Code Playgroud)

在这里我得到了5个编译错误.如果我D改成#define一切都很好,有人可以解释一下,为什么这段代码是非法的?

注意: 我使用的是VS2008编译器.

编辑: 经过一些答案,我看到我需要给出编译错误列表:

  1. 错误C2121:'#':无效字符:可能是宏扩展的结果
  2. 错误C2146:语法错误:缺少';' 在标识符"VALUE"之前
  3. 错误C4430:缺少类型说明符 - 假定为int.注意:C++不支持default-int
  4. 错误C2144:语法错误:'void'前面应加';'
  5. 错误C4430:缺少类型说明符 - 假定为int.注意:C++不支持default-int

第一个错误显示D不仅是define,还包括#.

c c++ c-preprocessor preprocessor-directive

20
推荐指数
4
解决办法
2217
查看次数

const变量是否放在只读内存中?

或者是否有一些其他保护措施不能修改它们?

如果它们在只读存储器中是有意义的 - 这就是制作它们的原因const,对吗?

c c++ const

19
推荐指数
3
解决办法
6801
查看次数

如何将std :: wstring写入文件?

我有一个wstring声明如此:

// random wstring
std::wstring str = L"abcàdëefŸg€hhhhhhhµa";
Run Code Online (Sandbox Code Playgroud)

文字将是UTF-8编码,因为我的源文件是.

[编辑:根据Mark Ransom,情况不一定如此,编译器将决定使用什么编码 - 让我们假设我从例如UTF-8编码的文件中读取此字符串]

我非常希望将其转换为文件读取(当文本编辑器设置为正确的编码时)

abcàdëefŸg€hhhhhhhµa
Run Code Online (Sandbox Code Playgroud)

但是ofstream不是很合作(拒绝接受wstring参数),并且wofstream据说需要知道语言环境和编码设置.我只想输出这组字节.通常如何做到这一点?

编辑:它必须是跨平台的,不应该依赖于UTF-8编码.我碰巧有一组存储在a中的字节wstring,并希望输出它们.它很可能是UTF-16或纯ASCII.

c++ unicode file wstring wofstream

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

目录的大小

有没有办法获得目录大小/文件夹大小而不实际遍历此目录并添加每个文件的大小?理想情况下想使用像boost这样的库,但win api也可以.

c c++ windows winapi

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

这是什么意思" - >"?

我几乎只用objective-c编程,几个月前我在box2d中编写了一点并说出" - >".这是什么意思?它不能是客观的 - 它必须来自c ++,因为box2d是c ++,我曾经看到有人在Objective-c代码中使用它,我似乎无法理解它做了什么.Google不支持非文字字符,所以我不可能谷歌它,因为我不知道它是什么.

c++ objective-c operators

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

Win32编程隐藏控制台窗口

我正在学习C++,我制作了一个新程序,我删除了一些代码,现在我的控制台窗口不会隐藏有没有办法让它在启动时隐藏,而不会看到它

c c++ windows console winapi

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

为什么wcout <<""; 没问题,但是wcout << string(); 不是?

#include <iostream>
#include <string>

using namespace std;

int main()
{
    wcout << L"Hello";          // OK.
    wcout << wstring(L"Hello"); // OK.
    wcout << "Hello";           // OK. Why?
    wcout << string("Hello");   // Error. Why?
}
Run Code Online (Sandbox Code Playgroud)

为什么std::wcout接受一个狭窄的字符串文字作为其参数但不接受一个狭窄的字符串对象?

c++ string encoding iostream

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

浮点行为不正确

当我在支持软件浮动仿真(硬件浮点禁用)的32位powerpc内核中运行以下C++程序时,我得到了错误的条件评估.有人可以告诉我这里有什么潜在的问题吗?

#include <stdio.h>

int main() {
   int newmax = 1;
   if ((newmax + 0.0) > 256) {
       printf("\nShouldn't be here\n");
   } else {
       printf("\nShould be here\n");
   }
}
Run Code Online (Sandbox Code Playgroud)

编译:

powerpc-linux-g++ -msoft-float -c floating.cxx
powerpc-linux-g++  -o floating floating.o
Run Code Online (Sandbox Code Playgroud)

目标系统中的输出:

[linux:/]$ ./floating
Shouldn't be here
Run Code Online (Sandbox Code Playgroud)

c++ floating-point powerpc ieee-754 embedded-linux

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

使用std :: wofstream写入文件.该文件仍然是空的

我使用VS2008编写了以下程序:

#include <fstream>
int main()
{
    std::wofstream fout("myfile");
    fout << L"???????? ?????? Österreich ?????? ????" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译它时,IDE问我是否要将我的源文件保存为unicode,我说"是的,请".
然后我运行程序,myfile出现在我项目的文件夹中.我用记事本打开它,文件是空的.我记得记事本只支持ASCII数据.我用写字板打开它,它仍然是空的.最后,我内心的小天才敦促我查看文件大小,毫不奇怪它是0字节.所以我重建并重新启动了程序,没有任何效果.最后,我决定向StackOverflow上非常聪明的人询问我缺少的东西,我在这里:)

编辑:

在上述聪明人留下一些评论之后,我决定按照他们的建议重写这个程序:

#include <fstream>
#include <iostream>
int main()
{
    std::wofstream fout("myfile");
    if(!fout.is_open())
    {
        std::cout << "Before: Not open...\n";
    }
    fout << L"???????? ?????? Österreich ?????? ????" << std::endl;
    if(!fout.good())
    {
        std::cout << "After: Not good...\n";
    }
}
Run Code Online (Sandbox Code Playgroud)

建造它.跑吧.并且...控制台清楚地读到了,令我惊讶的是:"之后:不好......".所以我编辑了我的帖子以提供新的信息,并开始等待答案,这可以解释为什么这是我能做什么.:)

c++ windows encoding visual-studio wofstream

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