【发布时间】:2013-01-20 23:58:28
【问题描述】:
我有一个要求用户输入的循环,并将其添加为向量,然后当他们键入“EXIT”时,它将停止并显示列表。我现在要做的是用size()确定元素的数量
这就是我所拥有的:
#include <iostream>
#include <string>
#include <unistd.h>
#include <iterator>
#include <vector>
using namespace std;
int main()
{
write(1,"\E[H\E[2J",7);
vector<string> list;
cout << "Enter UIDs: \n\n";
for(string uid ; cin >> uid && uid != "EXIT"; list.push_back(uid))
cout << " \n";
copy(list.begin(), list.end(), ostream_iterator<string>(cout, "\n\n"));
cout << "Vector size: " << uid.size() << endl;
return 0;
}
尝试编译时出现错误:
g++ sof.cpp -o sof
sof.cpp:在函数“int main()”中:
sof.cpp:16:32:错误:“uid”的名称查找已更改为 ISO“for”范围
sof.cpp:13:16:错误:不能在“uid”处使用过时的绑定,因为它有一个析构函数
【问题讨论】:
-
uid在第 16 行不存在;它只在for循环的范围内。 (提示:您的循环内容周围没有任何大括号)。 -
我已编辑以适当地格式化您的代码。这应该突出 @OliCharlesworth 提出的观点,即您缺少 for 循环主体的大括号。
-
@JonTaylor 不是真的,代码不需要大括号。错误是
uid.size()调用,应该是list.size()。 -
@OliCharlesworth 实际上,这里不需要大括号。
-
@juanchopanza 是的,我再次查看代码后意识到,但格式仍然有帮助。