2017-06-28 32 views
-3

我想獲得無限制的字符,實際上我創建了char *,我使用了cin,並且我想將其更改爲字符串。 我不知道用戶輸入的輸入的長度,所以我爲自己做了這個解決方案。 有人可以告訴我PLZ,如何獲得一個字符*不知道輸入的大小和轉換爲字符串。 謝謝。在Cpp中獲取無限字符

+6

爲什麼你不使用'std :: string'? – UnholySheep

+0

你可以創建一個鏈表。但是這種方式的效率遠低於std :: string的效率,它保存了一些以初始大小開始的緩衝區,然後當它變得太大時重新分配一個更大的緩衝區。 – AndyG

+0

其實我想要另一個解決方案,沒有得到字符串,我想解決我的問題獲得無限字符,除了鏈表嗎? – Zahra

回答

5

因爲它是C++。只需使用std::string

如果你真的需要使用char*看看this topic

2

而不是使用一個char *的,使用標準庫。

#include <string> 
    #include <iostream> 

    int main() 
    { 
     std::string data; 

     std::getline(std::cin, data); 

     std::cout << data << '\n'; 
    } 

這將讀取任何長度的串(至少,直到輸入一個新行,這將不會被包含在data),然後打印出來。

您可能還希望檢查std::cin的狀態以測試是否發生任何錯誤。

+0

非常感謝@Peter,但實際上我正在尋找能夠獲得char的方式。 感謝您的回覆! – Zahra

+1

@Zahra - 閱讀'std :: string'的文檔。它有成員函數,提供對底層數據的訪問......作爲指向(char的動態分配數組的第一個元素)的指針,即「const char *」。如果您嘗試使用原始指針(而不是'std :: string'),則需要在不再需要時手動管理內存分配和(同樣重要的)取消分配。 – Peter