我想编写可以帮助我提供包含给定文件夹的驱动器号的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");
}
}
}
答案 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' };