小编tru*_*ru7的帖子

C++ 源代码最适合的编码是什么

最近,我将 C++ 源代码的编码从 ASCII 移至 UTF-8,但我不确定这是一个好主意,因为我在文字方面遇到了一些问题,现在慢慢思考,我没有看到任何优势。

在 C++ 源代码中,哪种编码被视为标准或“最佳实践”?(我的IDE是VStudio和QtCreator,但我想这个问题是通用的)

c++ encoding

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

PHP调用另一个脚本但通过http(隔离它们)

让我们看看我是否清楚自己.我有一套旧的脚本在PHP4上运行良好,最好不要使用它们.我必须集成在PHP5上实现的新功能,我只需要从旧应用程序调用新应用程序上的脚本.

为了不必触摸旧的东西我想以某种方式"远程亲属"调用新的东西,只需要传递$ _REQUEST []数据.我不能包含它,因为这需要迁移到另一个PHP版本(和一些名称冲突).我不需要新的输出.

什么是更简洁的"调用"脚本传递参数的方法,fopen(" http://theserver.com/thescript.php "....)然后传递所有必要的标题来传递参数?还是有一些更直接的东西?

谢谢!

php

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

特定模板特化的重载成员函数

我有一个类tPoint,可以实现具有不同的基类型

template<typename T>class tPoint{
   T x;
   T y;
public:
   void Set(T ix, T iy){x=ix;y=iy;}
};
Run Code Online (Sandbox Code Playgroud)

当类型T是int时tPoint<int>,我想要一个特殊的Set(float,float),所以我可以在赋值之前舍入值.

我认为,通过专业化,我可以:

template<> void tPoint<int>::Set(float ix,float iy){x=ix+.5; y=iy+.5;}
Run Code Online (Sandbox Code Playgroud)

这样编译器就会抱怨类定义中没有匹配的函数.

但是如果我在类Set(float,float)中声明它然后它已经定义了(当它为T = float编译时)

我希望我明确表示,对此采取干净的做法或者我做错了什么?谢谢!

c++ templates specialization

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

字符串化 __VA_ARGS__(C++ 可变参数宏)

让我们

class Item{
public:
    Item(int id,const char *name,const char *props=NULL);
};
Run Code Online (Sandbox Code Playgroud)

我想写:

ITEM(1,FIRST);
ITEM(2,SECOND, WithSomeProps);
Run Code Online (Sandbox Code Playgroud)

用宏

#define ITEM(ID,NAME,...) new Item(ID,NAME, #__VA_ARGS__ )
Run Code Online (Sandbox Code Playgroud)

#__VA_ARGS__在 gcc 上编译得很好,但在 VStudio 上会出错。是否有可靠且便携的解决方案?

我想ITEM()在 .h 文件中有一个集合,该文件将被多次包含在不同的 #definitions of .h 文件中ITEM

c++ stringification c-preprocessor variadic-macros

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

拦截C++隐式复制构造函数,或调用其功能

鉴于:

class Foo {

private:
    static int cntFoos;

    //... stuff...

public:
     Foo() { cntFoos++; }
     ~Foo() { cntFoos--; }
};
Run Code Online (Sandbox Code Playgroud)

......"stuff"可以是任何属性集.(想法是有一个该类实例的计数器)

然后:

Foo aFoo;
Foo twoFoo=aFoo;
Run Code Online (Sandbox Code Playgroud)

将调用自动复制构造函数,因此我会想念这个.

有没有办法让该计数器反映自动创建的新实例?如果我实现显式复制构造函数,我将不得不逐个分配所有属性.但是,我想要一个浅的成员副本.我不需要执行深层复制,因此实现显式复制构造函数似乎需要做很多工作.

c++ copy-constructor shallow-copy default-copy-constructor

5
推荐指数
2
解决办法
141
查看次数

将任何GET请求重定向到单个php脚本

经过几个小时搞乱.htaccess后,我已经到了将任何请求发送到单个PHP脚本的结论,该脚本将处理:

  • 生成HTML(无论如何,包括或动态)
  • 301重定向在逻辑上具有更大的灵活性(对于哑巴.htaccess-eer)
  • 如果请求没有意义,最终会出现404错误.

留下.htaccess最小的功能.

经过一些测试后,它似乎非常可行,从我的角度来看更为可取.这么多,我想知道这种方法有什么不对或可能出错?

  • 服务器性能?
  • 在SEO方面,我没有看到任何问题,因为程序对机器人来说是"透明的".

redirector.php会期望一个包含实际请求的查询字符串.将所有内容发送到那里的.htaccess代码是什么?

php .htaccess

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

使用QAudioOutput(qt)实时流式传输

我想播放实时响应,没有明显的用户交互延迟.

为了获得低延迟,我必须发送一小块pcm数据.我在做什么:

    QAudioFormat format;
    format.setSampleRate(22050);
    format.setChannelCount(1);
    format.setSampleSize(16);
    format.setCodec("audio/pcm");
    format.setByteOrder(QAudioFormat::LittleEndian);
    format.setSampleType(QAudioFormat::SignedInt);

    QAudioDeviceInfo info(QAudioDeviceInfo::defaultOutputDevice());
    if (!info.isFormatSupported(format)) {
        qWarning()<<"raw audio format not supported by backend, cannot play audio.";
        return;
    }

    qAudioOutput = new QAudioOutput(format, NULL);

    qAudioDevice=qAudioOutput->start();
Run Code Online (Sandbox Code Playgroud)

然后

void Enqueue(TYPESAMPLEPCM *data,int countBytes){
    while(qAudioOutput->bytesFree()<countBytes){
          Sleep(1);
    }
    qAudioDevice->write((char *)data,countBytes);
}
Run Code Online (Sandbox Code Playgroud)

数据块是256字节(128个样本,它们的"粒度"约为6毫秒.

从具有高优先级的线程中的循环调用Enqueue,该线程提供数据块.它没有延迟,因为它所谓的Enqueue速度远远快于渲染音频数据.

但它看起来有一个缓冲不足的情况,因为声音播放,但有一种"噼里啪啦"的常规噪音.

如果我将块大小提高到256个样本,问题几乎消失了.开头只有一些噼啪声(?)

该平台是Windows和Qt 5.3.

这是正确的程序还是我遗漏了什么?

c++ audio streaming qt low-latency

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

vscode 外部调试窗口。自动关闭窗口

在带有外部调试控制台 ( launch.json : "console": "externalTerminal") 的vscode 中,独立调试窗口在调试会话完成后保持打开状态(等待按键)

由于多种原因,它非常实用,例如能够检查前一个会话的输出并最终将其与另一个会话进行比较。

但是你必须关闭旧的窗户,否则你会打开太多的窗户。有人找到了一种方法来自动关闭这些窗口中的某些离开 x 最近吗?我一直在尝试从 node.js 本身列出进程并杀死它们,杀死似乎有效,但窗口仍然可见,直到您按下某个键。

debugging terminal visual-studio-code

5
推荐指数
0
解决办法
374
查看次数

未初始化的浮点数(C++)

如果要初始化具有"未初始化"状态的浮点数,您会选择什么值?(值很容易测试,最不可能与实际值混淆)

float min = -999999.;

可能有问题可能要么与实际值混淆,要么甚至因为模糊的浮动舍入而被测试(它看起来很幼稚:-)

c++ initialization

4
推荐指数
2
解决办法
952
查看次数

通过引用将字符串作为参数传递

例如,我想改变函数中字符串的内容

function appendSeparating(s, s2, separator) {
    if (s != "")
        s += separator;
    s += s2;
}
Run Code Online (Sandbox Code Playgroud)

我想在返回时进行更改,但由于字符串是一个原语正在按值传递,因此修改不会影响原始值.

处理这个问题的最有效/最干净的方法是什么?(我尽量保持代码简洁)

javascript string pass-by-reference

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