gpt4 book ai didi

c++ - 努力将 LPSTR 和字符串添加到 LPCTSTR

转载 作者:太空宇宙 更新时间:2023-11-04 16:06:57 25 4
gpt4 key购买 nike

我是 C++ 上字符串的新手,我在这方面已经有几个小时了,我去过很多论坛,所以我知道 LPSTR、LPCSTR 或 LPCSTR 是什么类型的 char*,但我找不到方式并了解如何使用它们构建字符串。

我打算使用 GetCurrentDirectoryACopyFileA将文件复制/粘贴到新文件中。

这是我的代码:

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
#include <winbase.h>


using namespace std;


#define DR drum-
#define NO normal-
#define SO soft-


//main
int main(){
LPCTSTR input;
LPCTSTR output;
LPSTR cd;
LPCSTR src = "source.wav";



if(GetCurrentDirectoryA(strlen(cd), cd)){
input = (LPCTSTR)cd + (LPCTSTR)src;


if(CopyFileA(input, cd + "DR" + "hitclap.wav"))
cout<<"done"<<endl;
else
cout<<"error"<<endl;
}
}

最佳答案

API GetCurrentDirectory 不会向您返回新字符串。它所做的是您将一个内存位置传递给它,它会用当前目录字符串为您填充该内存位置。

问题是你没有分配内存,你传递给它一个未初始化的 char* (LPSTR), cd。您还可以在此未初始化的字符指针上使用 strlen。通常,您使用长度为 MAX_PATH 的字符数组来处理文件名:

char cd[MAX_PATH];

GetCurrentDirectoryA(sizeof(cd), cd);

第二个注意事项是您不能使用 + 运算符连接 C 字符串。要么走 C 路线并使用 strcat[1] 和 friend ,要么走 C++ 路线并将所有 char* 替换为 std::string 并使用它。

选择两条路之一,然后阅读关于 C 中的 char*-strings 或 C++ 中的 std::string 的教程。

要正确理解 LPTSTR 类型及其与 LPSTR 的关系,请参阅 this question & answer我创造了。

[1] How do I concatenate const/literal strings in C?

关于c++ - 努力将 LPSTR 和字符串添加到 LPCTSTR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33834981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com