首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

两个字符串合并解决办法

2013-11-21 
两个字符串合并我现在定义了一个宏#if A#define B“abc” #elif #define B “def” #endif,就是如果满足条件A,

两个字符串合并
我现在定义了一个宏#if A  #define B  “abc” #elif #define B “def” #endif,就是如果满足条件A,宏B就是"abc",如果不满足,宏B就是"def",再定义一个宏C,#define C  “tffs/”,现在要把宏B和宏C合并为另外一个宏D,我用#define D strcat(C,B),程序老是出错,请问还有其他方法吗 合并 宏 c
[解决办法]
char* strcat(char* dst, char* src);

dst需要是个可写内存,而你:
#define C "tffs/"
替换后是一个字符常量。


#ifdef __A__
#define __B__ "abc"
#else
#define __B__ "def"
#endif

#define __C__ "tffs/"

#define __D__ string(__B__)+__C__

[解决办法]
#include <string>

#define __D__ std::string(__B__)+__C__

[解决办法]
引用:
我现在用两个字符串相加,程序编译出错,提示string没有定义,我已经inclue string.h了

string在std命名空间的
std::string
或者前面using std::string
或者前面using namespace std;
c++建议用inline函数替代宏,你的情况用函数更容易些吧。
[解决办法]
你好,我的理解是:strcat(char*a,char*b)
表示将字符串b的值追加到字符串a的后面。
你宏定义的B 和C 在编译阶段将代码中引用他们的地方进行了简单的替换,这些替换后的字符串是存储在代码段里,在程序执行期间是无法改变他们的值,你调用strcat(B,C)实际上是在修改B中存储字符串常量的值,所以你已运行就会报“段错误”,把程序杀死。
你可以通过这种方式实现():
#include<iostream>
#include<string.h>
using namespace std;

#define A "abc"
#define B "mnt"

int main(){
    char a[20]=A;//a数组的大小要足够大
    char b[11]=B;
    strcat(a,b);
    cout<<a<<endl;
    return 0;
}

热点排行