小编c0d*_*0da的帖子

使用write()将无符号字符写入二进制文件

我正在制作一个读取二进制文件的程序.因此,我将单个字节读入无符号字符(实际上将数据读取为字符并将其转换为每个字符的无符号字符).现在我必须将未签名的字符写回二进制文件.

问题是,现在我被迫在将它们转换为字符后写入单个字节(因为二进制文件的write()需要char*buffer).所以,现在我必须做以下事情:

for(int x=0; x<data_size; x++)
{
    ch=(char)data[x];
    outfile.write(&ch,1);
}
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以解决这个问题,以便在读写时减少I/O操作量?

c++ binary file-io

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

tellg()返回否定答案

我已经以二进制模式打开了一个文件,下面的操作给出x的负值。我打开的文件大小约为2.5 GB。

infile.seekg(0, ios::end);
__int64 x = infile.tellg();
Run Code Online (Sandbox Code Playgroud)

我需要infile读取字节(无符号字符),因此我uifstream通过执行以下操作将其定义为:

typedef basic_ifstream<unsigned char, std::char_traits<unsigned char> > uifstream;
Run Code Online (Sandbox Code Playgroud)

这基本上是标准的ifstream,但使用unsigned chars代替chars

编辑:我正在使用Visual Studio 2005,并将uofstream更正为uifstream。

c++ file-io

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

简单的Postgresql libpq代码太慢了?

我正在使用libpq处理postgresql.下面给出的代码花费了很多时间(代码末尾给出的时间).

#include "stdafx.h"
#include <stdlib.h>
#include <libpq-fe.h>
#include <windows.h>

static void exit_nicely(PGconn *conn)
{
    PQfinish(conn);
    exit(1);
}

int _tmain(int argc, _TCHAR* argv[])
{
    const TCHAR *conninfo;
    PGconn     *conn;
    PGresult   *res;
    int nFields, i, j;

    if (argc > 1)
        conninfo = argv[1];
    else
        conninfo = _T("hostaddr=192.168.4.171 port=12345 dbname=mydb user=myname password=mypass");

    conn = PQconnectdb(conninfo);
    if (PQstatus(conn) != CONNECTION_OK)
    {
        fprintf(stderr, "Connection to database failed: %s",
                PQerrorMessage(conn));
        exit_nicely(conn);
    }

    /* Start a transaction block */
    res = PQexec(conn, "BEGIN");
    if (PQresultStatus(res) != PGRES_COMMAND_OK) …
Run Code Online (Sandbox Code Playgroud)

c c++ postgresql libpq

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

改变字节序的最快方法

什么是反转16位和32位整数的字节顺序的最快方法.我经常做类似的事情(这个编码是在C++的Visual Studio中完成的):

union bytes4
{
    __int32 value;
    char ch[4];
};

union bytes2
{
    __int16 value;
    char ch[2];
};

__int16 changeEndianness16(__int16 val)
{
    bytes2 temp;
    temp.value=val;

    char x= temp.ch[0];
    temp.ch[0]=temp.ch[1];
    temp.ch[1]=x;
    return temp.value;
}

__int32 changeEndianness32(__int32 val)
{
    bytes4 temp;
    temp.value=val;
    char x;

    x= temp.ch[0];
    temp.ch[0]=temp.ch[1];
    temp.ch[1]=x;

    x= temp.ch[2];
    temp.ch[2]=temp.ch[3];
    temp.ch[3]=x;
    return temp.value;
}
Run Code Online (Sandbox Code Playgroud)

有没有更快的方法来做同样的事情,我不需要做那么多的计算?

c c++ endianness visual-studio

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

有没有办法从国家或时区获取区域设置?

我用Python编写程序,我需要根据用户的语言环境输出日期:

  1. 获取按用户输入指定的国家/地区中的时区列表(使用pytz执行此操作)
  2. 获取用户的区域设置(我无法弄清楚如何操作)

有没有办法从县/时区获取区域设置或需要遵循一些其他方法?

或者我是否需要从用户自己获取区域设置?

编辑

该计划将成为一个网络应用程序.用户可以向我提供他的国家.但是,他是否必须明确地向我提供该地区,或者我可以从他的时区/国家获得它吗?

python timezone locale

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

Python"导入"性能查询

好吧,当有人向我指出使用import package导入包时,这个查询突然出现了我的想法,提供了更多的代码可读性.这是真的吗?我的意思是当使用这个语句与从包导入x,y,z相比时,是不是有任何导入整个包的开销?

python import

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

关系数据库中的多值属性?

当广泛引用关系数据库中的多值属性时,它的概念有多好?

让我举个例子来说明我的意思.假设我有下表:

UserID          Attribute1

User1           a,b,c
User2           x,y,z
User3           a,x,y
User4           c,b,z
[a,b,c,x,y,z are to be strings]
Run Code Online (Sandbox Code Playgroud)

还有另一个用户User5,我必须根据他是否Attribute1匹配其他4个用户中的任何一个来对其他用户提出一些建议.

[在图形数据库中,任务本来可以更容易,因为我可以使用相同的关系从相应的用户创建多个节点.

现在,这个表只是对实际数据库外观的微观抽象.如果不是数百万,表中的行数可能会达到数十万.此外,多个值实际上可能远远超过3.除此之外,数据库可能负载很重,在这种情况下,可能存在一些问题.

那么,在这种情况下,多值属性是否有用?或者有更好的方法做同样的事情吗?我能想到的一个显而易见的方法是将其存储为:

UserID          Attribute1

User1           a
User1           b
User1           c
User2           x
User2           y
User2           z
User3           a
User3           x
User3           y
User4           c
User4           b
User4           z
Run Code Online (Sandbox Code Playgroud)

在数据库中处理这种情况的任何更快的方法?或者是否有现代数据库的内置功能可以利用?

sql database database-design relational-database

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

从SQLite移植到Redis

我使用SQLite作为应用程序,其中我曾经存储8-10列.我曾经根据任意数量的这些属性的组合来检索数据.现在我想移植到Redis.所以我正在为它构建一个测试应用程序.

但我无法想到如何设计我的redis系统,以便能够根据任何这些属性检索数据.你们有没有任何建议/经验?

database key-value redis

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

原始SQL与基于OOP的查询(ORM)?

我正在做一个需要频繁访问数据库,插入和删除的项目.我应该使用Raw SQL命令还是应该使用ORM技术?项目可以正常工作,没有任何对象,只使用SQL命令?这一般会影响可扩展性吗?

编辑:项目是用户未提供我的内容但用户生成内容,项目在线的类型之一.因此,内容的数量取决于用户的数量,如果项目甚至有50000个用户,而且每个用户都可以创建内容或阅读内容,那么最合适的方法是什么?

sql database orm database-design

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