如何在c ++

时间:2018-06-18 11:47:21

标签: c++

我想编写可以帮助我提供包含给定文件夹的驱动器号的C ++代码。我正在编写给定的代码并在将字符变量添加到第11行的字符串变量时收到错误。 任何人都可以帮我纠正下面的代码。

#include "stdafx.h"
#include <string>
#include <windows.h>
#include <iostream>
#include "Shlwapi.h"
int main()
{
    char var;
    for (var = 'A'; var <= 'Z'; ++var)
    {
        char buffer_1[] = var +":\\PerfLogs";      ------->>>> line where i am getting the error
        char *lpStr1;
        lpStr1 = buffer_1;
        int retval;
        retval = PathFileExists(lpStr1);
        if (retval == 1)
        {
            std :: cout << "Search for the file path of : " << lpStr1;
            system("PAUSE");
        }
    }
}

3 个答案:

答案 0 :(得分:2)

您应该使用字符串库:

std::string str1="Str 1";
std::string str2=" Str 2";
str1.append(str2);      //str1 = "Str 1 Str 2"

答案 1 :(得分:2)

您获得的特定编译器错误是由于您尝试将const char*类型(由于字符串文字衰减为指针类型而添加到char)。让我们不要太担心;相反,让我们充分利用C ++标准库:

便携式解决方案如下:

#include <iostream>
#include <string>
// ToDo - include the header for PathFileExists
using namespace std::string_literals; // Bring in the std::string user defined literal.

int main() {
    for (auto c : "ABCDEFGHIJKLMNOPQRSTUVWXYZ"s){ // Note the user defined literal.
        std::string path = c + ":\\PerfLogs"s; // And again. This calls an overloaded `+`.
        int retval = PathFileExists(path.c_str()); // Pass the char buffer.
        if (retval == 1){
            std::cout << "Search for the file path of : " << path;
            system("PAUSE");
        }
    }
}

答案 2 :(得分:0)

您可以像其他人所建议的那样使用std::string。但由于它只有1个字符,所以不难做到这一点:

const char buffer_1[] = { var, ':', '\\', 'P', 'e', 'r', 'f', 'L', 'o', 'g', 's', '\0' };