创建字符串c ++的动态数组

Abd*_*mad 6 c++ arrays dynamic

我是一个非常基本的问题.我想在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;    
}
Run Code Online (Sandbox Code Playgroud)

但它给出了以下错误

error C2109: subscript requires array or pointer type
Run Code Online (Sandbox Code Playgroud)

错误是什么?

而且如果std::cin我从用户那里获得输入号码,我可以静态创建那个大小的数组吗?

rer*_*run 10

使用std::vector<string>std::list<string>过度滚动它.

  • 但真正的问题是`wordsCollection`应该是`collection`. (2认同)

Joh*_*web 9

你打算输入:

std::cin>>collection[i];
Run Code Online (Sandbox Code Playgroud)

你还需要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"));
}
Run Code Online (Sandbox Code Playgroud)