廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 9124 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
yakin999
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x4 鮮花 x15
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[C/C++][求助] vc++ 怎直接調用split 分割字串,這不能complier
// book001.cpp : 定義主控台應用程式的進入點。
//
// vc++ 怎直接調用split 分割字串?
//我想用split 直接用

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
     return 0;
}



int main(int argc, char *argv[])
{
string inputFileName;
string ;
string sample;
string tran_sample;

ifstream inputFile;


if (argc>0){
     inputFileName=string (argv);
}else{
cout << "輸入要開啟的檔名(包含副檔名 ..

訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容



[ 此文章被yakin999在2009-09-04 12:31重新編輯 ]



獻花 x0 回到頂端 [樓 主] From:APNIC | Posted:2009-09-04 11:53 |
teldeanmac85 手機
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x1 鮮花 x21
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

寫一個sample給你參考看看
你可以試一下

複製程式
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] ="- This, a sample string.";
  char * pch;
  printf ("Splitting string \"%s\" into tokens:\n",str);
  pch = strtok (str," ,.-");
  while (pch != NULL)
  {
    printf ("%s\n",pch);
    pch = strtok (NULL, " ,.-");
  }
  return 0;
}

此文章被評分,最近評分記錄
財富:50 (by 三仙) | 理由: ^^ 因為您的參與,讓程式設計更容易!!


獻花 x1 回到頂端 [1 樓] From:臺灣 | Posted:2009-09-04 19:14 |
yakin999
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x4 鮮花 x15
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

圖 1.



我程用的strtok 這段
但 卡在 strtok 只能處理 char 型態
我要找 方法 string 轉 char 不行

用過string.c_str()
也掛點 string.c_str轉出為 const char 常數
與char 不同,不能作運算!

請高手幫幫忙!!!


c++ 真的這難用嗎?


我看c# or vb 很好讀文字 檔


------------------文字檔格式
A B
T1
T2

------------------
可以 但卡在 string 轉 char 型態


[ 此文章被yakin999在2009-09-06 13:55重新編輯 ]


獻花 x0 回到頂端 [2 樓] From:臺灣數位聯合 | Posted:2009-09-06 13:35 |
teldeanmac85 手機
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x1 鮮花 x21
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

以下你可以試看看
我有寫一個函式split

複製程式
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
#include <vector>
using namespace std;

typedef vector<string> vstring ;

void split(vstring &szRet,string szStr,const char *del) 
{
   char *czStr = new char [szStr.size()+1];
   //char szBuf[1024] = {'\0'} ;
   
   strcpy(czStr,szStr.c_str());
   
   char *s = strtok(czStr,del);
   
   int cnt = 0 ;
   while( s != NULL ){
      szRet.push_back(s) ;
      s = strtok(NULL, del);
   }
   
   delete [] czStr ;
}


int main(int argc, char* argv[])
{
   unsigned int i ;
   string inputFileName;
   string sample;
   string tran_sample;
   
   ifstream inputFile;
   
   if (argc>1){
      inputFileName=string (argv[1]); 
   }
   else{ 
      cout << "輸入要開啟的檔名(包含副檔名):";
      cin >> inputFileName; 
   }
   
   
   inputFile.open (inputFileName.c_str(),ios::in);
   
   //檢查開啟的檔案是否正確
   while(inputFile.fail())
   {
      inputFile.clear();
      cout << "查無此檔,請重新輸入:";
      cin >> inputFileName;
      inputFile.open (inputFileName.c_str());
   }
   
   //顯示輸入的檔案內容
   string line ;
   long int lcount = 0 ;
   
   vstring word ;
   
   bool ret = false; 
   
   while ( 1 )
   {
      getline( inputFile , line ) ;
      if ( ! inputFile ) break ;
      ++lcount ;
   
      cout << setw(5) <<lcount << " : " << line << endl ;
   
      switch(lcount%3)
      {
         case 1:
            word.clear() ;
            split(word,line," ");
            for(i=0;i<word.size();i++){
               cout<<word[i]<<endl;
            }
         break;
         case 2:
         break;
         case 0:
            cout <<"---------------\n";
         break;
      } 
   }
   
   inputFile.close();
   return 0;
}





[ 此文章被teldeanmac85在2009-09-09 08:45重新編輯 ]


獻花 x0 回到頂端 [3 樓] From:臺灣新世紀 | Posted:2009-09-07 13:50 |
totsi
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x53
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

我這邊有最笨的方法來處理string的split,當然char* 也可以用同樣方式處理,只是效率應該是不高啦XDDDD
關於2樓的問題,應該在function內部把string copy到另外一個char []來處理應該就解決了吧?只是buffer可能要開大一點,如果是靜態的話。

不一定要把string塞給strtok阿 ^^m

複製程式
vector<string> Split(char cHyphen, string InStr)
{
  vector<string> vstrSplitData;
  string strtmp = "";

  for ( unsigned int i = 0 ; i < InStr.Length() ; i++ )
  {
    if ( InStr[i] != cHyphen )
    {
      strtmp += InStr[i];
    }else{
     vstrSplitData.push_back(strtmp);
     strtmp = "";
    }
  }

  if (strtmp != "") { vstrSplitData.push_back(strtmp); };  //最後一個區間

  return vstrSplitData;
}



[ 此文章被totsi在2009-09-08 17:02重新編輯 ]

此文章被評分,最近評分記錄
財富:50 (by 三仙) | 理由: ^^ 因為您的參與,讓程式設計更容易!!


恩...
獻花 x1 回到頂端 [4 樓] From:臺灣中華電信HINET | Posted:2009-09-08 16:56 |
leacks 手機
個人文章 個人相簿 個人日記 個人地圖
小有名氣
級別: 小有名氣 該用戶目前不上站
推文 x8 鮮花 x324
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

你是要以啥當分界點分?
看你的程式是要以空白來分??


獻花 x0 回到頂端 [5 樓] From:臺灣基礎科技網絡 | Posted:2009-09-15 08:23 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.026275 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言