小编use*_*893的帖子

在C和C++中正确使用字符串存储

流行的软件开发人员和公司(Joel Spolsky,Fog Creek软件)在编写C或C++代码时倾向于使用wchar_t进行Unicode字符存储.何时以及如何在良好的编码实践中使用charwchar_t

在编写利用Unicode的软件时,我对POSIX合规性特别感兴趣.

使用wchar_t时,您可以在每个字符或每个数组元素的基础上查找宽字符数组中的字符:

/* C code fragment */
const wchar_t *overlord = L"ov€rlord";
if (overlord[2] == L'€')
    wprintf(L"Character comparison on a per-character basis.\n");
Run Code Online (Sandbox Code Playgroud)

如何在使用char时比较unicode字节(或字符)?

到目前为止,我在C 中比较字符串和char类型字符的首选方法通常如下所示:

/* C code fragment */
const char *mail[] = { "ov€rlord@masters.lt", "ov€rlord@masters.lt" };
if (mail[0][2] == mail[1][2] && mail[0][3] == mail[1][3] && mail[0][3] == mail[1][3])
    printf("%s\n%zu", *mail, strlen(*mail));
Run Code Online (Sandbox Code Playgroud)

此方法扫描等效字节的字节.Unicode欧元符号占用3个字节.因此,需要比较三个char数组字节以了解Unicode字符是否匹配.通常,您需要知道要比较的字符或字符串的大小以及它为解决方案生成的位数.这根本不是处理Unicode的好方法. …

c c++ unicode posix character-encoding

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

DVCS(Github,BitBucket等)如何确保私有项目代码的完整性?

DVCS(Github,BitBucket等)如何确保私有项目代码的完整性?

当然,当您将代码上传到他们的在线存储库时,这些公司声称没有知识产权,但是如何确保项目的隐私,以便只有具有写入/提交访问权限的人才能真正查看数据?

如果您决定将项目移至私人服务器或其他主机,会发生什么?您的项目是否会被"删除"或仅从公共索引"删除"?

您如何确定您托管项目的公司的首席执行官将无法查看您的数据?

这些公司是否经过某种定期认证?或者整个交易基于信任和理解?

dvcs github bitbucket sensitive-data

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

在C语言中编写数据库抽象层的好策略

我需要在C中为PostgreSQL(libpq)的数据库访问API 以及可能的其他一些关系数据库管理系统编写一个数据库抽象层.

我正在考虑在pqsql和其他数据库系统中编写自己的现有函数抽象.编写这样的数据库抽象API时,最好的策略是什么?

到目前为止,我首选的写作计划可能是:

  1. 为任何感兴趣的特定数据库系统定义头,函数和包装器.
  2. 使用第一个连接调用(函数)时,检查并确定适合的关系数据库管理系统.
  3. 包括数据库抽象的正确方法和定义集.

但这种处理方式可能允许一次使用一个关系数据库管理系统.这对于数据库抽象层来说是常见的吗?

还有什么其他选择可以考虑?

c api postgresql rdbms libpq

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

奇怪的向量<long>加上'0'为'-1'

我正在写一个基本的国际象棋程序来计算你可以用给定的国际象棋数字制作多少套.数据文件:

4
22 3 5 6 2 0
1 1 1 1 1 1
8 4 4 4 1 2
5 3 3 3 0 2
Run Code Online (Sandbox Code Playgroud)

代码:

#include <iostream>
#include <fstream>
#include <vector>

int main
(int argc, char *argv[])
{
    std::fstream data_file;
    size_t i, k;
    std::vector<long> chess;
    long t, n;

    data_file.open("U1.txt", std::ios::in);

    data_file >> n;

    for (i = 0; i < n; i++)
        chess.push_back(0);

    for (i = 0; i < n; i++) {
        for (k = 0; k < 6; …
Run Code Online (Sandbox Code Playgroud)

c++ debugging error-handling

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