找回密碼 或 安全提問
 註冊
|註冊|登錄

伊莉討論區

搜索
尊貴會員無限觀看附件圖片尊貴會員無限看帖不用回覆安全提問(回答) 和 永久尊貴會員 事宜
mg霹靂偷拍julia幼女中文
重生當軍roe 141凡人修仙異世界出催眠性活月光下的home

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂

[繁]轉生貴族憑鑑定技

快艇正妹豪乳吸睛

(4月新番)[繁]為美好

✡ 斗破蒼穹 年番/鬥

[簡]狼與辛香料 Merch

在店內買個飲料也會出
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 6024|回復: 3
打印上一主題下一主題

[問題]C++字串比較問題[複製鏈接]

Rank: 2Rank: 2

帖子
475
積分
967 點
潛水值
31669 米
樓主
發表於 2018-7-4 01:37 AM|顯示全部樓層
本帖最後由 baepi 於 2018-7-5 01:38 AM 編輯

撰寫方式一點都不難...重點在於你的判斷式....真的要把所有比較暫存起來?很抱歉深夜隨手亂寫的程式就是糟糕...我寫的範例錯太大了...已修正
以下程式碼
另外...BCB幾萬年沒去碰過了...自從VS2005出了以後我就對它失去興趣...因此比較字串陣列我不知道是否有list可以使用...有的話就可以自由伸縮了
...
瀏覽完整內容,請先 註冊登入會員
分享使你變得更實在,可以使其他人感到快樂,分享是我們的動力。今天就來分享你的資訊、圖片或檔案吧。

使用道具檢舉

Rank: 2Rank: 2

帖子
475
積分
967 點
潛水值
31669 米
頭香
發表於 2018-7-4 02:32 PM|顯示全部樓層
不知是我表達能力太差還是我理解能力太差....聽不太明白大大想表達的意思
首先...我是看到大大在一樓的留言範例
  1. if(i0 == i1 && i0 == i2 && i0 == i3 && i0 == i4 && i0 == i5)
  2. // 動作
複製代碼
這段我不知用來判斷甚麼?
如果只是要判斷\字串之間是否有重複....那只需...如下
  1. #include<iostream>
  2. #include<windows.h>
  3. #include<string>
  4. using namespace std;

  5. const int max_count = 4;
  6. string str[max_count];
  7. //隨意填值...反正是測試
  8. void set_data()
  9. {
  10.         /*for (int i = 0; i < max_count; i++)
  11.         {
  12.                 str[i] = i + 48;
  13.         }*/
  14.         str[0] = "ABC";
  15.         str[1] = "ABCD";
  16.         str[2] = "BC";
  17.         str[3] = "ABCD";
  18. }
  19. void logic()
  20. {
  21.         bool c1 = false;
  22.         for (int i = 0, ii = 0; i < max_count; i++)
  23.         {
  24.                 for (int j = i + 1; j < max_count; j++, ii++)
  25.                 {
  26.                         if (strcmp(str[i].c_str(), str[j].c_str()) == 0)//代表相同
  27.                         {
  28.                                 c1 = true;
  29.                                 cout << "index = " << i << " 的 " << str[i] << " 和 " << "index = " << j << " 的 " << str[j] << " 是一樣的\n";
  30.                                 //break;//若是抓到一樣就中斷的話....
  31.                         }
  32.                         //cout << "前比較字串index = " << i << "\t後比較字串index = " << j << "\t結果存於布林index = " << ii << "\n";
  33.                 }
  34.         }
  35.         if (c1)//有字串是一樣的
  36.         {
  37.                 //動作
  38.         }
  39. }
  40. void main()
  41. {
  42.         set_data();
  43.         logic();
  44.         system("pause");
  45. }
複製代碼
另外...被大大在一樓的範例誤導 + 我也沒注意...strcmp的回傳是int型態等於0表示兩字串相等...等於1與等於-1都是不相等....所以不能用bool型態紀錄...因為0跟-1都算false...
瀏覽完整內容,請先 註冊登入會員

點評

jackyo04 我測試strcmp分別用int與bool測試過,字串完全相同會傳回0,其餘的是傳非0的數值,所以改了判斷,if(i0 != 0 && i1 !=0 && i2 != 0 && i3 != 0 && i4 != 0)   發表於 2018-7-5 08:36 AM
snowflying 7 樓有提到了,strcmp 回傳值是分成 < 0、 == 0、> 0,不是只有 0 1 -1 喔  發表於 2018-7-5 12:55 AM
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。

使用道具檢舉

Rank: 2Rank: 2

帖子
475
積分
967 點
潛水值
31669 米
3
發表於 2018-7-5 01:34 AM|顯示全部樓層
本帖最後由 baepi 於 2018-7-5 01:38 AM 編輯
snowflying 發表於 2018-7-5 12:42 AM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

不知道 "樓下" 是哪一層樓,底下沒看到有人說這個量大很慢
如果你的資料量是算億的,那麼你需要的是分散式 ...
...
瀏覽完整內容,請先 註冊登入會員

點評

jackyo04 我用bool測試了很多次,字串也是我隨機給的(英文數字參雜),沒有誤判耶..  發表於 2018-7-5 09:04 AM
jackyo04 我是用C++ Builder測試,用單純的String轉成char後比較,將String設為"aaa"來比,測出的值會有-2,-3,-4....或2,3,4...之類的結果發生  發表於 2018-7-5 09:02 AM
若瀏覽伊莉的時侯發生問題或不正常情況,請使用Internet Explorer(I.E)。

使用道具檢舉

Rank: 2Rank: 2

帖子
475
積分
967 點
潛水值
31669 米
4
發表於 2018-7-5 09:31 AM|顯示全部樓層
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。
snowflying 發表於 2018-7-5 03:12 AM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

strcmp 在 cplusplus.com 有說明喔
return value 那邊
  1. #include<iostream>
  2. #include<windows.h>
  3. #include<string>
  4. using namespace std;

  5. const int max_count = 5;
  6. string str[max_count];
  7. //隨意填值...反正是測試
  8. void set_data()
  9. {
  10.         str[0] = (char)1;
  11.         str[1] = "ABCD";
  12.         str[2] = "~~~~~~~~~~~~~";
  13.         str[3] = "ABCD";
  14.         str[4] = (char)255;
  15. }
  16. void logic()
  17. {
  18.         bool c1 = false;
  19.         for (int i = 0, ii = 0; i < max_count; i++)
  20.         {
  21.                 for (int j = i + 1; j < max_count; j++, ii++)
  22.                 {
  23.                         int ans = strcmp(str[i].c_str(), str[j].c_str());
  24.                         if (ans == 0)//代表相同
  25.                         {
  26.                                 c1 = true;
  27.                                 //cout << "index = " << i << " 的 " << str[i] << " 和 " << "index = " << j << " 的 " << str[j] << " 是一樣的\n";
  28.                                 //break;//若是抓到一樣就中斷的話....
  29.                         }
  30.                         cout << "前比較字串index = " << i << "\t" << str[i] << "\t後比較字串index = " << j << "\t" << str[j] << "\t結果 = " << ans << "\n";
  31.                 }
  32.         }
  33.         if (c1)//有字串是一樣的
  34.         {
  35.                 //動作
  36.         }
  37. }
  38. void main()
  39. {
  40.         set_data();
  41.         logic();
  42.         system("pause");
  43. }
複製代碼
以下是執行結果
重點是index = 0 and 2 and 4
  1. 前比較字串index = 0            後比較字串index = 1     ABCD    結果 = -1
  2. 前比較字串index = 0            後比較字串index = 2     ~~~~~~~~~~~~~   結果 = -1
  3. 前比較字串index = 0            後比較字串index = 3     ABCD    結果 = -1
  4. 前比較字串index = 0            後比較字串index = 4           結果 = -1
  5. 前比較字串index = 1     ABCD    後比較字串index = 2     ~~~~~~~~~~~~~   結果 = -1
  6. 前比較字串index = 1     ABCD    後比較字串index = 3     ABCD    結果 = 0
  7. 前比較字串index = 1     ABCD    後比較字串index = 4           結果 = -1
  8. 前比較字串index = 2     ~~~~~~~~~~~~~   後比較字串index = 3     ABCD    結果 = 1
  9. 前比較字串index = 2     ~~~~~~~~~~~~~   後比較字串index = 4           結果 = -1
  10. 前比較字串index = 3     ABCD    後比較字串index = 4           結果 = -1
  11. 請按任意鍵繼續 . . .
複製代碼
依舊是只有0 1 -1 三種結果...生不出其他結果
為此...我還特地去翻閱我撰寫的其他單晶片程式...不同總類的也就只有3種...我知道不多orz...更甚至linux下的C++...執行亦是如此
當然,我知道糾結這節點很沒意思,而且msdn也是如大眾說明說的的0,>0,<0,反正判斷是否相等就用回傳值是否==0罷了...只是就結果論...我是真的看不到0 1 -1 以外的回傳值就是...
瀏覽完整內容,請先 註冊登入會員

點評

baepi jackyo04 大大已經成功打我臉...BCB測出結果已經有非0 1 -1 以外的字串orz  發表於 2018-7-5 09:47 AM
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com

使用道具檢舉

您需要登錄後才可以回帖 登錄 | 註冊

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部