jtwc 发表于 2023-10-3 19:10

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;
}

sgbyg 发表于 2023-10-3 19:28

https://pic.imgdb.cn/item/651bfaccc458853aef56ab89.png
代码没问题因为我这里可以运行

jtwc 发表于 2023-10-3 19:34

sgbyg 发表于 2023-10-3 19:28
代码没问题因为我这里可以运行

老师,我这个报错是咋回事呢?

sgbyg 发表于 2023-10-3 19:38

jtwc 发表于 2023-10-3 19:34
老师,我这个报错是咋回事呢?

std::string报错那就把std::string换成printf输出呗
不行就把std::string注释掉 输出是多余的不是吗
你的编译器是vs20xx自带的而我用的是clang/mingw
不要叫老师 叫我giegie~

jtwc 发表于 2023-10-3 19:45

sgbyg 发表于 2023-10-3 19:38
std::string报错那就把std::string换成printf输出呗
不行就把std::string注释掉 输出是多余的不是吗
...

忘了加头文件#include <sstream>

nihaoz 发表于 2023-10-3 19:47

考虑加一下#include<string>

yes2 发表于 2023-10-3 20:01

或者在std::string变量的后面加上.c_str()

小雨网络 发表于 2023-10-6 14:32

#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;
}

jtwc 发表于 2023-10-7 13:23

小雨网络 发表于 2023-10-6 14:32
#include
#include
#include


感谢老师
页: [1]
查看完整版本: C++代码出错如何改呢?