C 字串 C 解析後 兩個字串無法連線

2021-08-18 04:25:28 字數 2201 閱讀 6742

1, c++ 字串的處

#define	len_name                 32

#define len_id 32

#define len_address 256

#define default_buflen 1024*40

class partnode

; partnode() : partnode(node_part) ;

partnode(char* buf, int & index);

virtual ~partnode();

}

轉化位元組碼

void partnode::tochararray(char buf, int  & index)

c#解析

public partnode(byte data, ref int index) 

如果不按實際長度傳,c#解析出來的東西沒錯,但長度「有問題」,其與實際的相同的字串長度不同。

index += stringlength.len_id;

// fbx_address = system.text.encoding.default.getstring (data, index, stringlength.len_address);

//fbx_address = system.text.encoding.default.getchars (data, index, stringlength.len_address);

//fbx_address = convert.tostring();

(fbx_address);

(fbx_address.length);

//string strs = "file://d:/cpicode/u3dprefabs/";

//char strsing = "file://d:/cpicode/u3dprefabs/";

(strs.length);

/ (strsing.length);

fbx_address.length = 143;

strs.length = 29;

用print時兩者的內容是一樣的。

但我們預期兩者的長度應該相同。

這兒只是為了說明問題的所在,可以寫names的字串來測試。c++上面的轉換以name為例。c#的解析以fbx_address為例。

所以應按實際長度來轉換位元組碼,這時會發現在c#中解析出現的東西因為沒有空間放『\0』而有問題,所以應該strlen(name)+1.

這時會發現在c#中多了一位,多出來的一位就是最後的'\0'。

如果要做兩字串的相加,需要把最後的'\0'刪除。

fbx = analyscene.scene.fbx_address;

names = analyscene.scene.parts[0].name;

char fbx_char_arry = fbx.tochararray();

char fbx_char = ;

fbx_string = fbx.trimend (fbx_char);

char fbx_char_ = fbx_string.tochararray();

names_string = names.trimend (fbx_char);//這個不要也可以連線成功

//// string a = "hello";

// int alen = a.length;

// string b = "world";

// int blen = b.length;

// string c = a + b;

// string d = string.concat (a+b);

//path = string.concat (fbx, names);

paths = fbx_string + names_string;

2  c#字串思考

把字串轉化為字元陣列時,沒有 '\0',其長度為4.

C 兩個字串相加

題意 given two binary strings,return their sum also a binary string for example,a 11 b 1 return 100 思路 思路 對於兩個string a,b從後往前取值,若取值為空則賦值為0.設定進製符號flag 若a ...

連線兩個字串

include include void main char lianjie char a 30 char b 30 原型 extern char strcat char dest,char src 用法 include 功能 把src所指字串新增到dest結尾處 覆蓋dest結尾處的 0 並新增 ...

交換兩個字串

交換兩個字串,原來的字串分別為 學生 和 好 字串輸出顯示為 學生好 交換後輸出顯示為 好學生 include using namespace std int main char c1 5 學生 char c2 3 好 char m,n,t m c1 n c2 cout 交換前 m n n t co...