C++代码出错如何改呢?
本帖最后由 jtwc 于 2023-10-3 20:23 编辑各位老师,C++代码出错如何改呢?谢谢了,源码如下:
错误 1 error C2679: 二进制“<<”: 没有找到接受“std::string”类型的右操作数的运算符(或没有可接受的转换)
#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; // WAV文件头部大小为44字节
while (true) {
if (ReadFile(hFile, buffer, sizeof(buffer), &bytesRead, NULL)) {
// 检查是否为WAV文件
if (bytesRead == sizeof(buffer) && buffer == 'R' && buffer == 'I' && buffer == 'F' && buffer == 'F' && buffer == 'W' && buffer == 'A' && buffer == 'V' && buffer == 'E') {
// 检查是否有声音
if (buffer != 0 || buffer != 0 || buffer != 0 || buffer != 0) {
// 写入CSV文件
csv << "1" << std::endl;
csv.flush();
std::cout << "检测到声音,已写入文件 " << csvFile << std::endl;
}
}
}
Sleep(1000); // 每秒检查一次
}
// 关闭文件和CSV
CloseHandle(hFile);
csv.close();
system("pause");
return 0;
}
https://pic.imgdb.cn/item/651bfaccc458853aef56ab89.png
代码没问题因为我这里可以运行
sgbyg 发表于 2023-10-3 19:28
代码没问题因为我这里可以运行
老师,我这个报错是咋回事呢? jtwc 发表于 2023-10-3 19:34
老师,我这个报错是咋回事呢?
std::string报错那就把std::string换成printf输出呗
不行就把std::string注释掉 输出是多余的不是吗
你的编译器是vs20xx自带的而我用的是clang/mingw
不要叫老师 叫我giegie~
sgbyg 发表于 2023-10-3 19:38
std::string报错那就把std::string换成printf输出呗
不行就把std::string注释掉 输出是多余的不是吗
...
忘了加头文件#include <sstream> 考虑加一下#include<string> 或者在std::string变量的后面加上.c_str() #include <iostream>
#include <fstream>
#include <Windows.h>
#include <string>
int main() {
std::string wavFile = "1.wav";
std::string csvFile = "a.csv";
// 监控文件声音
BYTE buffer; // WAV文件头部大小为44字节
while (true) {
// 监控文件
HANDLE hFile = CreateFile(wavFile.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE) {
std::cerr << "无法打开文件 " << wavFile << std::endl;
return 1;
}
DWORD bytesRead;
if (ReadFile(hFile, buffer, sizeof(buffer), &bytesRead, NULL)) {
// 检查是否为WAV文件
if (bytesRead == sizeof(buffer) && buffer == 'R' && buffer == 'I' && buffer == 'F' && buffer == 'F' && buffer == 'W' && buffer == 'A' && buffer == 'V' && buffer == 'E') {
// 检查是否有声音
if (buffer != 0 || buffer != 0 || buffer != 0 || buffer != 0) {
// 创建CSV文件
std::ofstream csv(csvFile, std::ios::app);
if (!csv) {
std::cerr << "无法创建文件 " << csvFile << std::endl;
CloseHandle(hFile);
return 1;
}
// 写入CSV文件
csv << "1" << std::endl;
csv.flush();
std::cout << "检测到声音,已写入文件 " << csvFile << std::endl;
// 关闭CSV
csv.close();
}
}
}
// 关闭文件
CloseHandle(hFile);
Sleep(1000); // 每秒检查一次
}
return 0;
}
小雨网络 发表于 2023-10-6 14:32
#include
#include
#include
感谢老师
页:
[1]