RSS   



  可打印版本 | 推薦給朋友 | 訂閱主題 | 收藏主題 | 純文字版  


 


 
主題: [問題] about C++   字型大小:||| 
u551
鐵驢友〔初級〕
等級: 4


 . 積分: 36
 . 文章: 115
 . 收花: 301 支
 . 送花: 0 支
 . 比例: 0
 . 在線: 1014 小時
 . 瀏覽: 720 頁
 . 註冊: 6762
 . 失蹤: 2735
#1 : 2005-11-25 06:21 AM     只看本作者 引言回覆

假設有一個輸入檔 in.txt
裡面只有一行
kevin,34,56

我要如何才能
讓abc 這三個variable
抓取成

a=kevin
b=34
c=56

麻煩知道的人 教小弟一下
感恩
(happy Thanksgiving)



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
alexanita
銅驢友〔初級〕
等級: 8等級: 8


 . 積分: 118
 . 文章: 307
 . 收花: 823 支
 . 送花: 1003 支
 . 比例: 1.22
 . 在線: 2303 小時
 . 瀏覽: 1060 頁
 . 註冊: 7981
 . 失蹤: 96
 . TWed2k-DVD幫BT組
#2 : 2005-12-22 05:08 PM     只看本作者 引言回覆

推薦一本好書,C/C++ BIBLE
裡頭應該有你需要的資料,
不然翻翻出也應該有吧~



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
kkimmjafa
銅驢友〔中級〕
等級: 9等級: 9等級: 9


十週年紀念徽章(五級)  

今日心情

 . 積分: 142
 . 文章: 43
 . 收花: 675 支
 . 送花: 30 支
 . 比例: 0.04
 . 在線: 1295 小時
 . 瀏覽: 50249 頁
 . 註冊: 6762
 . 失蹤: 1690
 . 亞利安星
#3 : 2006-1-2 02:51 AM     只看本作者 引言回覆

很久沒有用C++了
我現在都用VC++
不過方法大概一樣
你先用fopen將檔案打開
然後getline將資料一行一行讀進來
再用sscanf(arrar[],"%s,%d,%d",a,b,c)
這樣應該就可以達到你要的




[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
zxvf
驢有所悟
等級: 3等級: 3


 . 積分: 10
 . 文章: 10
 . 收花: 93 支
 . 送花: 2 支
 . 比例: 0.02
 . 在線: 143 小時
 . 瀏覽: 300 頁
 . 註冊: 6763
 . 失蹤: 241
#4 : 2006-1-25 09:48 PM     只看本作者 引言回覆

void main()
{
        FILE *fp;
        char buffer[ 1024 ];
        char a[ 64 ];
        int b, c;
       
        fp = fopen( "in.txt", "r" );
       
        if( fgets( buffer, 1024, fp ) ) {
                if( sscanf( buffer, "%s,%d,%d", a, &b, &c ) == 3 ) {
                        // do something....
                }
        }
       
        fclose( fp );
}
-----------------------
希望這是你要的  



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
adxis
驢baby


 . 積分: 0
 . 文章: 3
 . 收花: 0 支
 . 送花: 0 支
 . 比例: 0
 . 在線: 4 小時
 . 瀏覽: 20 頁
 . 註冊: 6683
 . 失蹤: 4776
#5 : 2006-2-1 11:52 PM     只看本作者 引言回覆

#include <fstream>
#include <iostream>
using namespace std;

int main()
{
     fstream fin("in.txt",ios::in);   
     char tmp[3][10];
     for(int i=0;i<2;i++)
         fin.getline(tmp[i],10,',');
     fin.getline(tmp[2],10);
     for(int i=0;i<3;i++)
         cout<<(char)(i+65)<<"="<<tmp[i]<<endl;
     system("pause");
}

可以試著寫得更有彈性一點....趁能寫的時候多寫點 :p

[url]http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcstdlib/html/vcoriStandardCLibraryReference.asp[/url]
這是msdn的 standard c++ lib reference 線上中算很完整的

[adxis 在 2006-2-1 11:55 PM 作了最後編輯]



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
psycho
鐵驢友〔初級〕
等級: 4


 . 積分: 42
 . 文章: 137
 . 收花: 353 支
 . 送花: 29 支
 . 比例: 0.08
 . 在線: 263 小時
 . 瀏覽: 1660 頁
 . 註冊: 5923
 . 失蹤: 4120
#6 : 2008-2-24 06:16 AM     只看本作者 引言回覆

為什麼不用fsanf 一次解決?


[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
ahox4
驢手小試
等級: 2


 . 積分: 6
 . 文章: 15
 . 收花: 61 支
 . 送花: 1 支
 . 比例: 0.02
 . 在線: 3 小時
 . 瀏覽: 40 頁
 . 註冊: 5784
 . 失蹤: 5630
#7 : 2008-6-17 07:13 AM     只看本作者 引言回覆

fscanf 的確可以一次解決…

其實scanf系列就可以過濾掉 「,」了

   sscanf( buffer, "%s,%d,%d", a, &b, &c ) == 3

之前網友寫的…這樣就過濾掉了。

C++的話, istringstream  (應該沒拼錯吧)  也可以做到這一類的事情…
或是 cin 的部份,記得可以設定成,把「,」 當成separator,這樣就會自動把「,」看成分隔符號。



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記

   

快速回覆
表情符號

更多 Smilies

字型大小 : |||      [完成後可按 Ctrl+Enter 發佈]        

溫馨提示:本區開放遊客瀏覽。
選項:
關閉 URL 識別    關閉 表情符號    關閉 Discuz! 代碼    使用個人簽名    接收新回覆信件通知
發表時自動複製內容   [立即複製] (IE only)


 



所在時區為 GMT+8, 現在時間是 2024-4-18 05:58 PM
清除 Cookies - 連絡我們 - TWed2k © 2001-2046 - 純文字版 - 說明
Discuz! 0.1 | Processed in 0.018290 second(s), 6 queries , Qzip disabled