问题如题
vc 中如何按单词读取Cstring类型的字符串,并且将提取出来的单词各自放置在一个字符串中字符串是CString
类型的,形如
123456 jii moov请各位大虾帮帮
谢谢

解决方案 »

  1.   

    以空格为间隔符的字符串,sscanf就解决了
      

  2.   

    ??
    看下cstring的find,left,right这几个函数
      

  3.   

    我先把CString转化为string类型 
    再用C++中的iostream来读单词能实现吗?
    我是这个写的
     string  mm_commond1=mm_commond[number].GetBuffer(mm_commond[number].GetLength());   
                //mm_commond[number].ReleaseBuffer();
    vector<string> words;
         ifstream in(mm_commond1);
          string word;
         string combin;
         while(in>>word)
    words.push_back(word);
    for (int i1=0;i1<words.size();i1++) 
    {
    cout<<words[i1]<<endl;
    }
    大虾帮忙看看行不行?
      

  4.   


    CString str =  "123456   jii   moov"
    basic_stringstream<TCHAR> conv;
    conv<<(LPCTSTR)str;
    basic_string<TCHAR> s;
    while(conv>>s){
      MessageBox(0,s.c_str(),0,0);
    }
      

  5.   

    我先把CString转化为string类型   
    再用C++中的iostream来读单词能实现吗?
    ------------------------------------你非要多爬几座山也没人管你,不过CString有自己的成员函数提供了拆分字符串的功能,比如
    Example
    The following example demonstrates the use of CStringT::Tokenize.
    //typedef CStringT< TCHAR, StrTraitATL< TCHAR > > CAtlString;
    CAtlString str( "%First Second#Third" );
    CAtlString resToken;
    int curPos= 0;resToken= str.Tokenize("% #",curPos);
    while (resToken != "")
    {
       printf("Resulting token: %s\n", resToken);
       resToken= str.Tokenize("% #",curPos);
    };
    Output
    Resulting Token: First
    Resulting Token: Second
    Resulting Token: Third