广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 9528 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为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.066223 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言