Board logo

主題: [問題] about C++ [打印本頁]

發表人: u551    時間: 2005-11-25 06:21 AM     主題: [問題] about C++

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

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

a=kevin
b=34
c=56

麻煩知道的人 教小弟一下
感恩
(happy Thanksgiving)
發表人: alexanita    時間: 2005-12-22 05:08 PM

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

發表人: kkimmjafa    時間: 2006-1-2 02:51 AM

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


發表人: zxvf    時間: 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 );
}
-----------------------
希望這是你要的  
發表人: adxis    時間: 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 作了最後編輯]
發表人: psycho    時間: 2008-2-24 06:16 AM

為什麼不用fsanf 一次解決?
發表人: ahox4    時間: 2008-6-17 07:13 AM

fscanf 的確可以一次解決…

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

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

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

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




歡迎光臨 TWed2k (http://twed2k.org/) Powered by Discuz! 4.1.0