C++ 如何从C+中的向量读取字符串列表+;

C++ 如何从C+中的向量读取字符串列表+;,c++,string,vector,C++,String,Vector,我的问题的背景是:我正在制作一个基于文本的游戏,它有一个非常基本的库存系统和可重用的输入系统。一切都很好,但库存系统有点困难。我试图用一个向量来创建它。测试/示例代码如下: int main() { string item; vector<string> inv; cout<<"There is a shotgun and a crowbar. What do you want to take?"<<endl<<"\n>"; getline(

我的问题的背景是:我正在制作一个基于文本的游戏,它有一个非常基本的库存系统和可重用的输入系统。一切都很好,但库存系统有点困难。我试图用一个向量来创建它。测试/示例代码如下:

int main()
{
string item;
vector<string> inv;
cout<<"There is a shotgun and a crowbar. What do you want to take?"<<endl<<"\n>";
getline(cin, item);
cout<<"\nYou decide to take the " << item << endl << "\n";
for(int i = 0; i < inv.size(); i++){
cout << inv.at(i) << endl;
}
cin >> item;
}
for(i=0; if i < inventory size (do statement below), then i+1 and restart)
cout << inventory.at(i) 
我是一个不断增长的数字,它应该在某个时间代表向量中的所有内容,然后我可以利用它将向量字符串读入一个列表

for(i=0; if i < inventory size (do statement below), then i+1 and restart)
cout << inventory.at(i) 

也是,我对C++和这个动态数组的概念很陌生,称为向量。我犹豫着问这个问题,因为我在网上找不到任何回答我问题的东西。我感觉答案就在我面前

您的工具名向量为空,因此循环不执行任何操作

for(i=0; if i < inventory size (do statement below), then i+1 and restart)
cout << inventory.at(i) 
替换

for(i=0; if i < inventory size (do statement below), then i+1 and restart)
cout << inventory.at(i) 
vector<string> inv;
向量inv;
用例如

for(i=0; if i < inventory size (do statement below), then i+1 and restart)
cout << inventory.at(i) 
vector<string> inv = {"shotgun", "crowbar"};
vector inv={“鸟枪”、“撬棍”};
此初始化在C++11及以后的版本(当前为C++14)中受支持,但在C++03中不受支持,在C++03中,您可以执行以下操作:

for(i=0; if i < inventory size (do statement below), then i+1 and restart)
cout << inventory.at(i) 
template< class Type, int n >
int n_items( Type (&)[n] ) { return n; }

// ...
static const char * const inv_data[] = {"shotgun", "crowbar"};
vector<string> inv( inv_data, inv_data + n_items( inv_data ) );
template
int n_项(类型(&)[n]){return n;}
// ...
静态常量字符*常量inv_数据[]={“鸟枪”、“撬棍”};
向量库存(库存数据,库存数据+n个项目(库存数据));

<>请注意,C++标准库仍然不幸的是,C++ 14没有为大写或小写的<代码>字符串< /代码>提供简单的函数。为了支持大写输入,您需要创建这样的字符串。

在您发布的代码中,清单中没有字符串,这就是循环不执行任何操作的原因。您没有任何输入语句。你能发布一些代码来实际显示你的问题吗?
inv
在循环时仍然是空的<代码>i=0;i计算为
0<0
/
false
,循环被跳过。您可能希望获取
字符串,并将其拆分为要获取的单个项:
std::istringstream iss(项);而(iss>>项目)倒推(项目)-尽管在将项目添加到
库存之前,检查项目是否为
“猎枪”
“撬棍”
,是有意义的。另一种方法是
if(item.find(“散弹枪”)!=item.end())inv.push_back(“散弹枪”)-对撬棍重复。你不需要暂停,这会造成伤害。而是从命令解释器运行程序。或者,如果在Windows中的Visual Studio中,请通过Ctrl+F5运行它。或者在
main
@MattMcNabb的最后一个右括号上放置一个断点:
getline
是一个输入语句。哇,我很抱歉。忘了这篇文章吧。如果可以,请删除。我不敢相信我错过了。第一次在论坛上发帖,我完全羞辱了自己。。。顺便说一句,它现在工作如预期…我从对这个问题的评论中看到,我可能误解了向量的用途。它不是一个允许名称的向量,而是一个正在使用的名称向量。好吧,就这样吧。
for(i=0; if i < inventory size (do statement below), then i+1 and restart)
cout << inventory.at(i)