草庐IT

c++ - 写入 .WAV 时的两个问题 - C++

我目前正在使用C++中的openFrameworks编写程序音乐引擎。我可以生成一首歌曲并从标准化(-1到1之间)的浮点缓冲区完美播放它,但是当我尝试将相同的浮点缓冲区写入32位.WAV时,我遇到了几个问题文件。当我在Finder的预览中播放文件时(我在OSX10.9.2上),整个歌曲持续时间的播放都极度削波和失真。它似乎能够很好地读取格式,因为它显示了正确的文件持续时间、比特率和采样率http://i.stack.imgur.com/fz2w8.png.奇怪的是,当我将同一个文件拖到LogicProX中时,它可以正常读取、成功转换并且播放时没有失真。它还会生成一个波形显示,我可以在其

c++ - 如何用 C++ 编写自定义流转换?

在大量使用Haskell和一般的函数式语言之后,我正在学习C++,我发现我一直在尝试解决同样的问题:从输入流中读取一些数据根据特定算法对它们进行标记处理token如果这是Haskell,我可以简单地利用一切都是惰性的这一事实,并根据我的想法编写我的转换,然后它会在下游被消耗时得到应用。甚至还有库执行这种精确模式(conduit和pipes)。假设我想获取序列123456...并输出123456...。我可以看到如何编写对流进行操作并就地处理数据的临时代码。但是我想知道是否有一种抽象机制允许我通过(以任何可以想到的方式)从另一个流转换数据来构建新流。这种抽象应该允许我缓冲数据在我处理它时

c++ - ROS_INFO_STREAM 不打印

我正在尝试在叠瓦式try...catch中使用ROS_INFO_STREAM,但我只有顶级输出这是一小段代码:voidfailure(){try{//throwstd::length_errorstd::string("abc").substr(10);}catch(...){ROS_ERROR_STREAM("ROSfailure()");//printOKstd::cout输出:ROScallingROSfailure()coutfailure()coutcallfunction我的猜测是ROS_ERROR_STREAM看起来缓冲了,但作为错误输出它不应该。我正在运行ROSGroo

C++ 同时记录到控制台和日志文件

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我有一个基类,例如“ProcessingThread”,有几个派生。每个推导都有一个特定的名称,例如“DerivationOne”,“DerivationTwo”,...现在对我来说似乎很有用,可以将格式化输出输出到控制台,打印如下内容:[DerivationOne]:ActionXtookplace![DerivationTwo]:ActionYtookplace![Derivation

c++ - 流的非持久格式化

以本地化方式格式化std::*stream输出的最佳方式(如果有的话)是什么,以便一个位置的格式更改不会影响该流在其他位置的使用?也就是说,我想为单个语句设置流格式,而不是为流的剩余生命周期设置格式。以下只是提出上述问题的理由。假设您以默认浮点格式打印强度:ostringstreamoss;oss然后以固定的2位精度打印坐标:oss然后,20行后,以相同的固定2位数字格式打印射线方向:oss几个月后,在打印pt和打印dir之间的某处添加了默认浮点格式的亮度打印:oss糟糕,lum将以固定的2位精度打印,因为您在打印pt时更改了20行之前的oss格式。现在您必须记忆起您在oss中所做的更

c++ - 使用 rdbuf 复制流在输入为空时失败

使用rdbuf将流复制到另一个流是一种众所周知的方法:#include#includeintmain(){std::ifstreamin{"/tmp/foo.txt"};std::cerr但是,当/tmp/foo.txt为空时,这会破坏(=设置错误位)我的cerr。因此,不会显示Done\n。这是为什么呢?使用G++/libstdc++/GNULinux和Clang++/libc++/OSX观察。 最佳答案 这似乎是定义的行为-参见例如http://en.cppreference.com/w/cpp/io/basic_ostream

c++ - 与解析相关的 token 到底是什么

我必须使用C++中的解析器和编写器,我正在尝试实现这些功能,但我不明白token是什么。我的功能/操作之一是检查是否有更多的token要生产boolParser::hasMoreTokens()我该怎么做,请帮忙所以!我正在打开一个包含文本的文本文件,所有单词都是小写的。我该如何检查它是否有更多token?这是我的boolParser::hasMoreTokens(){while(source.peek()!=NULL){returntrue;}returnfalse;} 最佳答案 标记是词法分析的输出和解析的输入。通常它们是这样的

C++ 级联流插入(硬件帮助)

我在之前的堆栈问题中找到了这个潜在的解决方案。我的问题是它没有输出到文件。程序没有错误地终止,并且实际上做了它应该做的事情,因为我已经用cout验证了这一点。程序接受一个7位数的电话号码。然后将所有可能用这7位数字组成的单词写入一个文件,遵守标准电话上的字母数字关联。程序使用两个函数:main和wordGenerator并包含iostream、fstream和cstdlib主要:intmain(){intphoneNumber[7]={0};//holdsphonenumber//promptusertoenterphonenumbercout='0'&&iwordGenerator:

c++ - 在 GCC 4.7.2 和 Clang 3.2 中显然缺少 getline() 的重载,将 RRef 流式传输

我在尝试将getline()与临时流对象一起使用时遇到了意外的编译错误:#include#include#includeusingnamespacestd;intmain(){stringinput="hello\nworld\nof\ndelimiters";stringline;if(getline(stringstream(input),line))//ERROR!{cout看起来不存在接受对流对象的右值引用的getline()重载。如果我将main()更改为使用左值,它会按预期编译和运行:intmain(){stringinput="hello\nworld\nof\ndeli

c++ - 如何编写带有自定义标志的 ostream 运算符

我经常想将STL容器写入ostream。以下代码工作正常(至少对于vector和列表):template>classContainer>std::ostream&operatorconst&container){typenameContainer::const_iteratorbeg=container.begin();while(beg!=container.end()){o现在我想扩展此代码以支持可自定义的分隔符。以下方法显然行不通,因为运算符应该只接受两个参数。template>classContainer>std::ostream&operatorconst&container