C++ 指向向量第一个字节的指针<;浮动>;

C++ 指向向量第一个字节的指针<;浮动>;,c++,xaudio2,C++,Xaudio2,XAudio2中XAUDIO\u buffer结构的音频缓冲区指针定义为BYTE*pAudioData。当我使用16位整数PCM时,我的程序是这样的: void buildWaveBuffer(std::vector<unsigned char> &vec) { std::string lineString; int lineInt; unsigned char lowByte, highByte; std::ifstream myfile("

XAudio2中
XAUDIO\u buffer
结构的音频缓冲区指针定义为
BYTE*pAudioData
。当我使用16位整数PCM时,我的程序是这样的:

void buildWaveBuffer(std::vector<unsigned char> &vec)
{
    std::string lineString;
    int lineInt;
    unsigned char lowByte, highByte;
    std::ifstream myfile("sineInt16");

    if (myfile.is_open())
    {
        while(myfile.good())
        {
            std::getline(myfile,lineString,',');
            lineInt = atoi(lineString.c_str());
            highByte = (lineInt >> 8) & 0x00FF;
            lowByte = lineInt & 0x00FF;
            vec.push_back(lowByte);
            vec.push_back(highByte);
        }
        myfile.close();
    }
}
void buildWaveBuffer(标准::向量和向量)
{
std::string-lineString;
int-lineInt;
无符号字符低字节,高字节;
std::ifstream myfile(“sineInt16”);
如果(myfile.is_open())
{
while(myfile.good())
{
std::getline(myfile,lineString,,);
lineInt=atoi(lineString.c_str());
高字节=(lineInt>>8)和0x00FF;
lowByte=lineInt&0x00FF;
向量推回(低字节);
向量推回(高字节);
}
myfile.close();
}
}
“sineInt16”
是一个.csv文件。由于向量在内存中是按顺序组织的,所以我只需执行
pAudioData=&vec[0]
即可。如果我想将.csv的格式更改为浮动格式,该怎么办?如何给出向量中第一个字节的指针?我应该使用另一个容器,比如简单的字符数组吗

如何给出向量中第一个字节的指针


完全一样,但我不确定它是否能达到你的预期。阅读问题的注释。

第一个字节的地址对您有什么帮助?浮点的字节解释与其实际值完全无关。XAudio2能应付吗?你的循环是错误的。它会错误地读取文件。@Konrad老实说,我不确定,我猜因为我在选项中指定样本是Float32格式,每个样本有32位,XAudio2会在解释值之前读取前4个字节?@Nawaz我不知道你为什么这么说,我没有收到任何错误,我的扬声器发出了非常好的正弦波。@Deli Nawaz是正确的,因为您的循环不能正确处理读取失败:当
getline
失败时会发生什么?您的代码无法处理这个问题,而且
getline
可能不是这里最合适的。对
float
char
使用流式操作符。