C++ 分割字串

2013-10-01 3:00 pm
從記事本讀入每行的字串後, 我想再分割成數個字串
例如, 讀入的字串str為 "R1 R2 R3 R4" , 我想分開成s1="R1", s2="R2", s3="R3", s4="R4"

以下是我的程式

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

#define SIZE 20
char line[SIZE];
string str;
string s1, s2, s3, s4;

int main(){

fstream input;
input.open("c:\input_file.txt",ios::in);
while(input.getline(line,sizeof(line),'\n')){

str = line;
}

system("pause");
return 0;
}

回答 (2)

2013-10-03 8:34 am
#include <cstring>
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str = "00 22 33 4B";
string s1="3",s2,s3,s4;

//因為strtok吃char * ,所以先將str轉換char的字元陣列tmp_str
const char* cstr = str.c_str();
char tmp_str[999];
memset(tmp_str,0,sizeof(tmp_str));
strncpy(tmp_str,cstr,str.size());

char *delim = " ";
char * pch;

pch = strtok(tmp_str,delim);
s1.assign(pch); //將pch從char *轉成string型態
cout << s1 << endl;

pch = strtok(NULL,delim);
s2.assign(pch);
cout << s2 << endl;

pch = strtok(NULL,delim);
s3.assign(pch);
cout << s3 << endl;

pch = strtok(NULL,delim);
s4.assign(pch);
cout << s4 << endl;

system("pause");
return 0;
}
2013-10-01 3:29 pm

#include <stdio.h>
#include <fcntl.h>
#include <string.h>

/* for atol() */
#include <stdlib.h>


int search_item(char *buf,int *item_index, int max_item);


main( int argc, char *argv[] )
{
int i, line_c, line_skip;
FILE *fp;



int ic, item_index[6 /* ITEMS / per line*/ ];
char buf[82 /*LINESIZE*/ ], tmp[82 /*LINESIZE*/ ];
char filename[32];


strcpy( filename, "myfile.txt" );
if( (fp=fopen(filename,"r")) == NULL )
{
printf("\n --- fopen %s failed --- \n", filename );
exit(1);
}

while(fgets(buf,80,fp)!=NULL)
{
ic=search_item(buf,item_index,6);
if(ic!=1)
continue;

if(buf[0]=='#') /* search REMARK */
......

if( fp!=NULL )
fclose( fp );
}


int search_item(char *buf,int *item_index, int max_item)
{
int linesize,i,j;

linesize=strlen(buf);
if(linesize)
if(buf[linesize-1]=='\n')
buf[--linesize] = 0;
for(i=0;i<max_item;i++)
item_index[i] = 0;
for(i=0;buf[i]==' ';i++);
for(j=0;j<max_item && buf[i]!=NULL && i<linesize;)
{
item_index[j] = i;
for(;buf[i]!=' ' && buf[i]!=NULL;i++);
j++;
if(j<max_item && buf[i]!=NULL)
buf[i++] = NULL;
for(;(buf[i]==' ') && buf[i]!=NULL;i++);
if(buf[i]==NULL)break;
}
return(j);
}
* 部落格搬家建議(移轉累積人氣); 建立隨意窩Xuite日誌要領 ==>http://blog.xuite.net/tools241/blog/85568657*隨意窩Xuite 面版樣式(CSS) 設定(問/答) ==> http://blog.xuite.net/tools241/blog/112234512
*痞客邦 PIXNET 面版樣式(CSS) 設定(問/答) ==>
http://blog.xuite.net/tools241/blog/112182670*部落格語法 "(原無名播放器請改用此)MP3播放器" *
Firefox 24.0 免安裝 介紹22個元件: 瀏覽快15%/轉址/HTML5/擋廣告/字典,網頁翻譯/IE模式/簡繁轉換/視頻,(blog)音頻下載/安全/下載顯示列/時鐘/截圖/4倍速下載/...
http://blog.xuite.net/tools241/blog/108046301
*
PotPlayer 免安裝 異空版 ;"影音之星(可截圖);迅雷等 "播放軟體" ;*數種"(由特徵碼)下載續傳"軟體 *Word Reader 6.24 免安裝 繁體/簡體/英文 等7國語言 portable (freeware)

網路電視 不看時如何停掉相關程序,以免佔用資源 *
[原創]IETester方便測試網頁,讓電腦有IE6、IE7、IE8...*免費的 TrueCrypt 介紹 -- USB隨身碟加密 或 硬碟加密 (加密映像檔/隱藏加密區/設備)

* 試聽曲 ==>
換頁不中斷!8個背景音樂盒*部落格小玩意 "圖片輪播器語法貼紙" * 免費軟體 OpenOffice


收錄日期: 2021-04-30 18:02:15
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20131001000010KK01542

檢視 Wayback Machine 備份