2013-10-01 49 views
-1

這是用於類項目的一部分。這不是必需的,但是現在我正在分配一個字符,並且它會在我的代碼中添加幾十行。我想寫一個函數,它會接受一個字符串和一個指針,並將這個文字複製到指向的數組中。編寫一個將字符串文字複製到由指針給出的字符數組中的函數

它看起來像這樣。

char* word = new char[12]; 
stringCopy(word, "thisisaword"); 
cout << word; 

程序會在屏幕上打印「thisisaword」。

因爲這是一堂課,所以我受限於我能做的事。

--I具有動態分配和大小恰好陣列(通過使用臨時的,未施膠陣列並找到它們的長度來分配準確尺寸的新的)

--I不能使用任何字符串庫函數,我必須寫我自己

- 我不能使用重載運算

到目前爲止,我還沒有嘗試任何事情來實現這一點,因爲我不知道怎麼辦。我寫了一個函數,它給出了兩個指針,這非常簡單,我不需要發佈它的代碼。 strlen源,刪除然後分配適量的目標指針,然後在由字符串長度控制的循環中複製char-by-char。

+0

你能告訴我們你試過了嗎? – 0x499602D2

+3

不好的課。 'std :: string'應該從第一天開始講授。作爲一門高級課程,你可以研究細節,但是基本課程應該關注於不重新發明輪子。我們有太多可以重新發明輪子的程序員,可以使用現有的程序員太少。 – MSalters

+0

我認爲「發明自己的字符串」是爲了說明爲什麼需要複製構造函數,如何重載運算符等。 – paulm

回答

1

我喜歡這些任務。這是我的解決方案:

#include <iostream> 

struct P { char const* s; std::size_t z; }; 
template <std::size_t z> 
P s(char const(&s)[z]) { return { s, z }; } 

int main() 
{ 
    auto p(s("thisisaword")); 
    char* word = new char[p.z]; 
    for (auto i(0); (i<:word:> = i<:p.s:>); ++i) <%%> 
    std::cout << word << '\n'; 
    delete[] word; 
} 
+0

我們不能使用重載操作符。 – Bobazonski

+0

@ user1362548:這太遺憾了。我改用代碼使用不同的東西。 –

+0

是否有理由使用幾乎沒有人知道存在的瘋狂外觀有向圖令牌? :-) –

相關問題