本帖最后由 jtwc 于 2023-10-3 20:23 编辑
各位老师,C++代码出错如何改呢?谢谢了,源码如下:
错误 1 error C2679: 二进制“<<”: 没有找到接受“std::string”类型的右操作数的运算符(或没有可接受的转换)
[C++] 纯文本查看 复制代码 #include <iostream>
#include <fstream>
#include <Windows.h>
int main() {
std::string wavFile = "1.wav";
std::string csvFile = "a.csv";
// 监控文件
HANDLE hFile = CreateFile(wavFile.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE) {
std::cout << "无法打开文件 " << wavFile << std::endl;
return 1;
}
// 创建CSV文件
std::ofstream csv(csvFile);
if (!csv) {
std::cout << "无法创建文件 " << csvFile << std::endl;
CloseHandle(hFile);
return 1;
}
// 监控文件声音
DWORD bytesRead;
BYTE buffer[44]; // WAV文件头部大小为44字节
while (true) {
if (ReadFile(hFile, buffer, sizeof(buffer), &bytesRead, NULL)) {
// 检查是否为WAV文件
if (bytesRead == sizeof(buffer) && buffer[0] == 'R' && buffer[1] == 'I' && buffer[2] == 'F' && buffer[3] == 'F' && buffer[8] == 'W' && buffer[9] == 'A' && buffer[10] == 'V' && buffer[11] == 'E') {
// 检查是否有声音
if (buffer[40] != 0 || buffer[41] != 0 || buffer[42] != 0 || buffer[43] != 0) {
// 写入CSV文件
csv << "1" << std::endl;
csv.flush();
std::cout << "检测到声音,已写入文件 " << csvFile << std::endl;
}
}
}
Sleep(1000); // 每秒检查一次
}
// 关闭文件和CSV
CloseHandle(hFile);
csv.close();
system("pause");
return 0;
}
|