我目前正在学习如何在C ++中使用列表(以及一般的C ++),方法是将字符串值输入到列表中,在do-while循环中,然后在for循环中从列表中打印它们,但是遇到错误:
error C2440: '=': cannot convert from 'std::list<std::string,std::allocator<_Ty>> *'
to 'std::string*'
错误是指这一特定行:
output = &container[k];
我不知道如何解决这个问题,或者我做错了什么。我也不知道我对列表的理解是否有问题,或者我是否错误地使用了指针。
如果有任何答案可以尽可能简单地表达,我将不胜感激,谢谢。
其余代码:
#include <iostream>
#include <string>
#include <list>
using namespace std;
void main()
{
int i = 0;
list<string> container[10];
string input, *output;
do{
cout << "enter a value for container location " << i << endl;
cin >> input;
container[i].push_back(input);
i++;
}while (i < 10);
for (int j = 0, k = 0; j < 10; j++)
{
output = &container[k];
cout << "Value of container location " << j << " = " << *output << endl;
k++;
}
}
答案 0 :(得分:0)
根据您的代码,您明确指出container
的类型为vector<string>
而不是[10]
或仅string
(同时保持数组规范)。
答案 1 :(得分:0)
Pignaut, 您正在声明一个String列表的数组(大小为10),因此,该数组的每个元素都是一个字符串列表。这就是为什么这个错误。 但是,我想你要声明一个字符串列表。