CString的TrimRight的使用誤區

2021-08-08 10:07:54 字數 975 閱讀 8052

cstring的trimright的使用誤區 

今天同事發現乙個問題,經研究是我們的使用錯誤。

通常我們會把這個方法用作截掉右側的字串,比如,獲取檔案的全路徑名,然後截掉檔名獲得檔案所在路徑。但是在這裡湊巧出現了錯誤。  

cstring str = _t("aaa.ini\\fileexchage\\shareeeeeeefileaa\\\\\\ageeexchange\\fileexchange.ini");

cstring str2 = _t("aaa.ini\\fileexchage\\shareeeeeeefileageeexchange\\fileexchange.ini");

"\\fileexchange.ini"),_t(""));

str2.trimright(_t("\\fileexchange.ini"));

str.trimright(_t("\\fileexchange.ini"));

最終str和str2的結果是一致的都是「t("aaa.ini\\fileexchage\\shar」)

經查其準確作用是:

trimright()這個方法可用於消除從右側起所遇到的所有空格字元,同時也可用於消除目標字元集合中出現的任一字元,直到遇到第乙個不屬於目標字串子集的字元為止。

void trimright( );

void trimright( tchar chtarget );

void trimright( lpctstr lpsztargets );

chtarget

指定要清除的目標字元集合

lpsztargets

指向需要清除的目標字元集合的指標

這個函式並不是要清除從右邊起所出現的完全匹配與目標字元集合的字串,如:

cstring a = "ie.exe";

a.trimright(".exe");

執行之後,a中的字串為i,而不是ie

我們要防止出現這種錯誤。

C String類的實現

參考c primer.string類的實現,清翔兔 06,jan.include using namespace std class string string void private char m data inline string string const char str if str m...

C String類的實現

include using namespace std class string string void private char m data inline string string const char str inline string string const string other i...

c string的唯讀特性

using system using system.collections.generic using system.text namespace net.mst.fourth.stringattribute 輸出結果 從以上執行結果 通過b沒能成功修改a指向的內容 容易誤以為string為值型別,...