台灣最大程式設計社群網站
線上人數
1157
 
會員總數:240686
討論主題:186544
歡迎您免費加入會員
討論區列表 >> C/C++ >> VC++ 如何讀取搜尋 TXT 問題
[ 變換順序 ]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
VC++ 如何讀取搜尋 TXT 問題
價值 : 150 QP  點閱數:179 回應數:19

樓主

VB睿
門外漢
0 4
110 19
發送站內信

小弟想讀取 跟 搜尋 TXT

TXT內容如下 (有中文)

546384=帽子
.
.
.
.
.
.
.
有大量的資料

小弟想要讀取TXT後 搜尋"546384" 然後顯示出"帽子"
搜尋"帽子" 然後顯示出"546384"

有高手能給個VC++ 小範例嗎 小弟想研究研究

搜尋相關Tags的文章: [ VC++ TXT ] , [ VC++ 搜尋 ] ,
本篇文章發表於2017-09-07 21:23
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

小魚
檢舉此回應
如果是固定格式的話,
可以用 readline 一欄一欄讀出,
然後用 = 分成兩個字串
之後記錄在自己定義的List中。
本篇文章回覆於2017-09-07 21:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

VB睿
檢舉此回應
小魚您好

能幫小弟寫個小範例嗎
小弟好研究..
本篇文章回覆於2017-09-07 21:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

小魚
檢舉此回應
最近都在熬夜趕工,
沒時間做這個,
我有給你一些關鍵字,
網路上找看看吧,
另外,C++的話現在可以用Array,List是C#的
你如果會的話可以自己寫Linked Array
本篇文章回覆於2017-09-08 01:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
最有價值解答

noise
檢舉此回應
//以下 sample code 並沒有考慮太多例外及最佳化,供你參考
FILE *fPtr;
char str[1024],szNo[1024],szAlias[1024];
int iPos=0,i;

fPtr=fopen("d:\\001.txt","rt");
if(fPtr!=NULL)
{
iPos=0;
while( fgets(str,1024,fPtr)!=NULL)
{
for(i=0;i<1024;i++)
{
if(str[i]=='=')
{
iPos=i;
break;
}
}
if(iPos!=0)
{
for(i=0;i<iPos;i++)
{
szNo[i]=str[i];
szNo[i+1]=0;
}
for(i=iPos+1;i<strlen(str);i++)
{
if(str[i]=='\n'||str[i]==0)
break;
szAlias[i-iPos-1]=str[i];
szAlias[i-iPos]=0;
}
}
if(strcmp(szNo,"546384")==0)
printf("%s",szAlias);
//if(strcmp(szAlias,"帽子")==0)
// printf("%s",szNo);

}
fclose(fPtr);
}
本篇文章回覆於2017-09-08 11:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

VB睿
檢舉此回應
noise您好

小弟想把 szAlias 顯示在label

但 szNo 能順利顯示 但szAlias 卻不行..

該怎麼顯示中文呢..


if(strcmp(szNo,"546384")==0)
{
int n = atoi(szAlias);
this->label31->Text =Convert::ToString(n);
}
//printf("%s",szAlias);

if(strcmp(szAlias,"帽子")==0)
{
int n = atoi(szNo);
this->label32->Text =Convert::ToString(n);
}
本篇文章回覆於2017-09-09 07:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

小魚
檢舉此回應
szAlias應該是文字吧,
為什麼要轉換成數字呢?
本篇文章回覆於2017-09-09 08:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

VB睿
檢舉此回應
因為直接
this->label31->Text =Convert::ToString(szAlias);

只會顯示 Ture..

本篇文章回覆於2017-09-09 09:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

小魚
檢舉此回應
你有下中斷點去看szAlias的值是什麼嗎?
本篇文章回覆於2017-09-09 10:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

VB睿
檢舉此回應
小弟不知道值該怎麼看
Char 怎麼轉成 string..
本篇文章回覆於2017-09-09 17:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
回應

小魚
檢舉此回應
展開一個一個看
類似這樣
不過要在變數指定完之後的地方下中斷點
本篇文章回覆於2017-09-09 21:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
作者回應

VB睿
檢舉此回應
但是展開看小弟還是沒辦法
將值轉成string..
本篇文章回覆於2017-09-09 22:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
回應

小魚
檢舉此回應
你所謂的string的型態是什麼?
是std::string嗎?
本篇文章回覆於2017-09-10 00:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
作者回應

VB睿
檢舉此回應
this->label31->Text = szAlias;
這樣寫會出現這樣的錯誤

錯誤 error C2664: 'void System::Windows::Forms::Control::Text::set(System::String ^)' : 無法將參數 1 從 'char [1024]' 轉換成 'System::String ^'

所以才需要把他轉成 String
本篇文章回覆於2017-09-10 07:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
不錯的參考

小魚
檢舉此回應
參考這篇吧

Convert char* to System::String^

C++跟C#對於型別很嚴謹,不同型別一定要經過轉換之後才能使用,
這種問題其實你自己去搜尋就可以了,
不過看來這應該是.Net的版本,我的C++用的還是舊的版本...
本篇文章回覆於2017-09-10 08:14
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
作者回應

VB睿
檢舉此回應
小魚您好
有 Convert System::String^ to char* 嗎..
小弟找好久 都找不到..

本篇文章回覆於2017-09-10 17:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   

回覆
如要回應,請先登入.