如何添加字符串
How to add strings?
我真的很陌生C++,我正在制作一个简单的程序
TCHAR CONFIG_NAME[32];
TCHAR CONFIG_PROCESSNAME[32];
int a = GetPrivateProfileString("Injection", "Name", "", CONFIG_DLLNAME, 32, path);
但我需要向它添加一个字符*,因为它需要完整的路径。举个例子,它只是在做
我的DLL
.dll但它需要做
C:/folder/anotherfolder/mydog/MyDLL
.dll我试过做
char* DLLLOC = "NULL";
sprintf(DLLLOC, "%s%s", dir, CONFIG_DLLNAME);
但它崩溃了
问题是DLLLOC
没有足够的空间来容纳您的字符串连接。
一种解决方案是预先分配一个大型char
缓冲区并改用它,如下所示。
#define CONFIG_DLLNAME "configdllname"
int main()
{
char str[1024];
const char* dir = "dir";
sprintf(str, "%s%s", dir, CONFIG_DLLNAME);
printf(str);
}
如果字符串超过 1024 个字符,您会遇到同样的问题;欢迎使用 C 语言中的字符串操作:)。
另外,既然您标记这是一个C++问题,那么您没有理由不使用std::string
?这将使您的生活更加轻松。
使用
wstring DLLLOC(dir);
DLLLOC.append(CONFIG_DLLNAME);
这保留了缓冲区溢出(是的,Windows 在 PATH 中的限制为 255 个字符,因此您可以在大小在限制范围内之后断言)
您的char* DLLLOC
中只有五个字符的空间。 (4 表示字母"NULL",在 null 终止符(在 C++ 中标记字符串结尾的零字节)前面还有一个。 您需要确保char* DLLLOC
指向一个足够大的区域,以包含您放入其中的字符串。
您可以尝试动态分配空间:
// c style
char* DLLLOC = malloc(strlen(dir)+strlen(CONFIG_DLLNAME)+1);
// c++ style
char* DLLLOC = new char[strlen(dir)+strlen(CONFIG_DLLNAME)+1];
(如果dir
和config_DLLNAME
是字符数组而不是指向字符的指针,则可以在此处使用sizeof
。
或者,您可以事先声明空格:
char DLLLOC[256];
为此,您必须确保最终字符串不会比数组的大小长。
相关文章:
- 如何将字符串添加到布谷鸟过滤器?
- 将常量字符串添加到非常量字符串是否会给出常量字符串
- 如何在C++中为字符串添加字符?
- 在特定位置为字符串添加空格
- 有没有办法将字符串添加到 Vector 中,但前提是它尚不存在?->C++
- 是什么使这个以'+'开头的字符串添加成为有效的语句?
- 如何使用函数将字符串添加到向量中
- 如何在 c++ 中将字符串添加到动态数组?
- 向字符串添加字符
- 向字符串添加位值
- 如何从用户那里接收多个字符串并将这些字符串添加到 c++ 中的数组中?
- 字符串添加数字 C++
- std::字符串添加到字符*
- C++ 向字符串添加"u"
- JSONCPP正在向字符串添加额外的双引号
- C 将N字符串添加到字符串流中
- 以简单且更少的代码方式将字符串添加在一起
- 字符串添加或减法操作员
- 将字符串添加到2D数组并显示COUT消息(没有错误消息?)的错误
- 如何使用递归向字符串添加逗号