使用std :: ofstream时,没有运算符“ <<”与这些操作数匹配

时间:2019-12-27 14:35:30

标签: c++ vulkan

我正在尝试执行以下操作:

  1. 创建一个批处理文件。

  2. 获取环境变量。

  3. 写入文件Env变量+一堆着色器文件名以生成SPIR-V代码。

  4. 关闭文件。

void ResourceLoader::GenerateBatchFile(std::vector<std::string> fileNames)
{
    std::ofstream file;

    file.open("CompileShaders.Bat");

    const std::string vulkansdk_name =  getenv("VULKAN_SDK");

    std::string vulkansdk_name_replaced;

    if (checkIfCharacterExists(vulkansdk_name, '\\'))
    {
        vulkansdk_name_replaced = ReplaceCharacter(vulkansdk_name, '/', '\\' );
    }
    else
    {
        vulkansdk_name_replaced = vulkansdk_name;
    }

    //Generate SPIR-V files for all the mentioned Shader file names
    for (int i = 0; i < fileNames.size(); ++i)
    {
        file << vulkansdk_name_replaced + "/Bin/glslangValidator.exe -V Shaders/" + fileNames[i] + " -o Shaders/BinaryCode/" + fileNames[i] + ".spv\n";
    }

    file.close();

    return;
}

我在这行出现错误

file << vulkansdk_name_replaced + "/Bin/glslangValidator.exe -V Shaders/" + fileNames[i] + " -o Shaders/BinaryCode/" + fileNames[i] + ".spv\n";

编译器说:

  

错误C2679二进制'<<':找不到带右运算符的运算符-类型'std :: basic_string,std :: allocator>'(或没有可接受的转换)VKRenderer c:*** prj \ vulkanrenderer \ vkrenderer \ vkrenderer \ resourceloader.cpp 98

     

[当我将鼠标悬停在Visual Studio中的错误上时]

     

-没有运算符“ <<”与这些操作数匹配

我包括了

#include <windows.h>
#include <iostream>
#include <fstream>

奇怪的部分是我的代码在装有MS Visual Studio 16 2019的PC上运行,并且当前我正在工作的地方(即我的笔记本电脑)没有运行,并抛出了没有MS VS 16 2019的错误,而是MS VS 15 2017。

我被困住了,请告诉我哪里出了问题,它可以在我的PC上运行,但不能在使我感到困惑的笔记本电脑上运行。

感谢您阅读!

编辑:感谢“ Nicol Bolas”,这个问题得到解决。问题是我没有包含<string>,而是包含了我认为可以使用的<cstring>,但事实并非如此。

0 个答案:

没有答案