函数在C++中连接两个char*

Tre*_*son 2 c++ dll strcat visual-studio-2008

首先,我是一名C#程序员,所以我对C++的工作知识相当有限.我在大学时把它拿回来了,但是在10年内没有碰到它,所以如果这是相对简单的东西,请原谅我.

我正在尝试创建一个可以在C#中使用的DLL,它实现了libwpd库.

我已经设法创建了一个DLL,它可以导出我可以通过P/Invoke访问的2个函数.第一个返回一个常量整数(由visual studio作为样本生成),第二个返回一个字符串.

如果我从函数返回一个常量字符串,它会成功传递给C#,我可以在另一端读取它,所以我知道数据正在被传回.

我遇到的问题是libwpd.我不得不修改他们的TextDocumentGenerator.cpp文件,将信息添加到char*而不是使用他们使用的printf,以便我以后可以访问它.

我已经在头文件的公共部分添加了一个变量定义,所以我可以从调用代码中读取它.

现在,我正在尝试编写一个函数,允许我将libwpd给出的char*添加到外部char*.

我想出来了:

char* addString(const char* addThis, char* toThis)
{
char* copier  = (char*)malloc(strlen(toThis) + 1 + 1);
strcpy(copier, toThis);
strcpy(copier, "1");

toThis = (char*)malloc(strlen(copier) + 1);
strcpy(toThis, copier);

return copier;
} 
Run Code Online (Sandbox Code Playgroud)

但当我传回信息时,我得到一个空白字符串.

我通过调用来调用该函数 totalFile = addString("\n", totalFile);

(我意识到它应该只在技术上反复地向字符串添加"1",但它甚至没有做到)

如果我将strcpy更改为复印机线的strcat,它会锁定.

我不知道如何用C++创建程序,所以我甚至可以通过这些函数来查看正在发生的事情.

任何援助将不胜感激.

Gri*_*wes 6

你知道存在std::string吗?它是一个用C++处理字符串的类; char *来自C的遗产

std::string提供+运营商,做你想做的.

  • @crashmstr,你知道有两种方法从字符串中获取`char*`吗?`c_str()`和`&str [0]`? (2认同)