首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

字符串转字符数组的有关问题

2012-03-02 
字符串转字符数组的问题请教一个字符串转字符数组的问题,比如:string strname aaa,bb,ccc,ddd,e,ffff

字符串转字符数组的问题
请教一个字符串转字符数组的问题,比如:
  string strname = "aaa,bb,ccc,ddd,e,ffff" 
转换成 string[] strname = {"aaa","bb","ccc","ddd","e","ffff"}
谢谢大虾了

[解决办法]
既然用的是string类型,那自然是用c++,自己写一个就行

C/C++ code
#include  <string> 
#include <iostream>

using namespace std;

int main()
{
string s = "abc,def,hijk";
string sub[10];
char tmp[10];
int i = 0,count = 0, k = 0;
for(; i < s.length(); ++i)
{
if(s[i] == ',')
{
tmp[k] = '\0';
sub[count++] = tmp;
k = 0;
}
else
{
tmp[k++] = s[i];
}
}
tmp[k] = '\0';
sub[count++] = tmp;
for(i = 0; i < count; ++i)
cout < <sub[i] < <endl;
return 0;
}

[解决办法]
c_spark 好快哦
写了我就帖下 呵呵 
C/C++ code
#include <string>#include <iostream>using namespace std;#define MAX   10main(){  int i=0,j=0;  string strname = "aaa,bb,ccc,ddd,e,ffff";   string  strname1[MAX];  string::size_type pos=0,prev_pos=0;  while((pos=strname.find_first_of(',',pos))!=string::npos)  {     strname1[i]=strname.substr(prev_pos,pos-prev_pos);     prev_pos=++pos;     i++;  }  strname1[i]=strname.substr(prev_pos,pos);  while(j<=i)  {     cout<<strname1[j]<<endl;     j++;  }}
[解决办法]
呵呵
写好了:
C/C++ code
#include <iostream>#include <string> using namespace std; int main() {     cout << "Plz input a string:\n";     string strname ;     getline(cin, strname);     cout << strname << endl;               int i = 0, j = 0, k = 1; //k为将要分得的string的个数     string::iterator p = strname.begin();     while (p != strname.end()) {         if (*p++ == ',') {            k++;         }              }     int douhao = 0;     int *count  = new int[k + 1];  //count数组计算两端以及逗号的位置     count[0] = -1;     count[k] = (strname.end() - strname.begin() );     p = strname.begin();     while (p != strname.end()) {         if (*p == ',') {            douhao++;            count[douhao] = (p - strname.begin());                                 }             p++;     }     string *mystr = new string[k];          p = strname.begin();         cout << "I get:\n";     for (int i = 0; i < k; i++) {         mystr[i] = string(p + 1 + count[i], p + count[i+1]); //取得分开后的字符串         cout << mystr[i] <<endl;     }     delete []count;     delete []mystr; } 

热点排行