2010-05-26 36 views
0

我有幾個C++字符串和一些單詞。我需要從每個字符串中獲得第一個字。然後我必須將它們全部放入char數組中。我該怎麼做?如何從幾個C++字符串中獲取第一個單詞?

謝謝我前進!

+2

如果這是功課,請標記它。 – egrunin 2010-05-26 13:55:11

+1

你試過了嗎?發佈你嘗試過的代碼不工作,我們可以幫助調試它 – 2010-05-26 13:59:33

+0

你可以通過首先閱讀一些C++教程來實現。 – 2010-05-26 14:04:00

回答

3

這裏是做這件事的一種方式......

// SO2913562.cpp 
// 


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


void getHeadWords(const char *input[] 
        , unsigned numStrings 
        , char *outBuf 
        , unsigned outBufSize) 
{ 
    string outStr = ""; 

    for(unsigned i = 0; i<numStrings; i++) 
    { 
     stringstream ss(stringstream::in|stringstream::out); 
     ss<<input[i]; 

     string word; 
     ss>>word; 
     outStr += word; 

     if(i < numStrings-1) 
      outStr += " "; 
    } 

    if(outBufSize < outStr.size() + 1)//Accomodate the null terminator. 
     //strncpy omits the null terminator if outStr is of the exact same 
     //length as outBufSize 
     throw out_of_range("Output buffer too small"); 

    strncpy(outBuf, outStr.c_str(), outBufSize); 
} 

int main() 
{ 
    const char *lines[] = { 
     "first sentence" 
     , "second sentence" 
     , "third sentence" 
    }; 

    char outBuf[1024]; 

    getHeadWords(lines, _countof(lines), outBuf, sizeof(outBuf)); 

    cout<<outBuf<<endl; 

    return 0; 
} 

但要注意上面的代碼有邊際錯誤檢查和可能存在安全漏洞。不用說我的C++是有點生疏了。章EERS。

1

你正在使用什麼編譯器? 轉換爲chararray是首先要尋找的東西。

之後做到這一點,你可以很容易地通過你的排列工序(並尋找空格) 是這樣的:

while (oldarray[i++] != ' ') 
    yournewarray[j++]; 

我想你得弄清楚其餘的自己,因爲這看起來像一些功課學校:)

+1

爲什麼他會將'std :: string'轉換爲'char *',這樣他就可以在使用'str.find()'的時候手動執行它了? – 2010-05-26 14:00:44

+0

沒有進入C++多,普通C更多。 我真的不知道庫函數這些天像str.find() 我想編譯時,機器可能會做同樣的事情。順便說一句:老師喜歡手動提高圖書館功能,以便做家庭作業;) – SirLenz0rlot 2010-05-26 14:24:38

1

假設這是家庭作業,而當你說「弦」你的意思的char(而不是std::string)簡單的空分隔陣列:

define your strings 
define your resulting char array 
for each string 
    find the offset of the first char that is not in the first word 
    append that many bytes of the string to the result array 

如果這不是家庭作業,請給我們一些小小的代碼,我們將填寫空白。

2

我會以爲這是功課,所以這裏是一個概述:

首先,你需要在你的字符數組分配足夠的空間。在作業中,你通常會被告知最大尺寸。對於所有的第一句話來說,這個最大值已經足夠了。

現在,您需要爲該數組中的插入點設置索引。從零開始。

現在仔細檢查您的字符串。在每一種情況下,從0向前移動一個索引,直到看到一個\ 0或一個空格(或其他分隔符)。將該字符插入結果數組中的插入點,並將該索引增加1.

如果遇到如果你在最後一個字符串上,在插入點插入一個\ 0,並且你完成了,如果沒有,插入一個空格並移動到下一個字符串。

相關問題