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

creating dynamic array of string c++

本文关键字:动态 数组 c++ 字符串 创建      更新时间:2023-10-16

我是一个非常基本的问题的结构体。我想在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::vector<string>std::list<string>进行手动滚动。

您想要键入:

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"));
}

我认为应该是:

std::cin >> collection[i];

我认为这是一个简单的拼写错误。std::cin>>wordsCollection[i]应该是std::cin>>collection[i]

尝试以下操作:

#include <vector>
#include <string>
#include <iostream>
int main(int argc, char* argv[])
{
    std::vector<std::string> myStrings;
    myStrings.push_back(std::string("string1"));
    myStrings.push_back(std::string("string2"));
    std::vector<std::string>::iterator iter = myStrings.begin();
    std::vector<std::string>::iterator end = myStrings.end();
    while(iter != end)
    {
        std::cout << (*iter) << std::endl;
        ++iter;
    }
    return 0;
}

您之所以出现此错误,是因为您试图访问int(即wordsCollection)的元素,而不是int数组(即collection)。你应该写的是

std::cin>>collection[i]