创建字符串c++的动态数组
creating dynamic array of string c++
我是一个非常基本的问题的结构体。我想在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]
相关文章:
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 输出没有重复元素的动态数组(收缩数组)C++
- 正在插入动态数组
- 如何在动态数组上使用搜索函数
- C++ 动态数组每次添加时将大小增加 1 - 错误
- 静态数组的自由动态数组
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 使用 thread 类在 C++ 中构造线程的动态数组时出错
- 如何为 c++ 的不同变量类型的结构元素创建动态数组?
- C++ 使用存储在动态数组中的文本文件中的数据查找模式
- 当我使用自定义类型创建动态数组时,即使使用字符串,它似乎也不起作用
- 为什么 c++ 动态数组的大小没有改变?
- 具有自定义构造函数 (C++) 的类型的动态数组分配
- 指针的 C++ 动态数组 - 何时需要使用它?
- 删除动态数组时未定义标识符
- 哈希映射使用 nullptr c++ 初始化节点的动态数组
- 如何将字符串和整数读取到两个单独的动态数组中的程序编写?
- 动态数组的 C++ 重载加运算符
- 基于数组的列表 - 动态数组创建时出错