1. ホーム
  2. c++

[解決済み] 文字列の動的配列の作成 C++

2022-03-11 16:59:06

質問

私は非常に基本的な質問に構造です。c++で文字列の配列を動的に作成したい。

どうすればいいのでしょうか?

これは私の試みです。

#include <iostream>
#include <string>
int main(){
    unsigned int wordsCollection = 6;
    unsigned int length = 6;

    std::string *collection = new std::string[wordsCollection];
    for(unsigned int i = 0; i < wordsCollection; ++i){
        std::cin>>wordsCollection[i];
    }
    return 0;    
}

しかし、次のようなエラーが発生します。

error C2109: subscript requires array or pointer type

エラーは何ですか?

また、ユーザーから入力番号を取得する場合、以下のようになります。 std::cin そのサイズの配列を静的に作成することはできますか?

どのように解決するのですか?

と入力したはずです。

std::cin>>collection[i];

そして、あなたはまた delete[] collection (さもないと、このメモリがリークします)。

を使用するのがよいでしょう。 std::vector<std::string> collection; で、生ポインタの使用は完全に避けてください。

#include <iterator>
#include <iostream>
#include <string>
#include <vector>

int main()
{
    const unsigned int wordsCollection = 6;

    std::vector<std::string> collection;
    std::string word;
    for (unsigned int i = 0; i < wordsCollection; ++i)
    {
        std::cin >> word;
        collection.push_back(word);
    }

    std::copy(collection.begin(),
              collection.end(),
              std::ostream_iterator<std::string>(std::cout, "\n"));
}