【发布时间】:2011-11-12 06:37:24
【问题描述】:
我想在 for 的 init 语句中声明两种类型的变量。像下面的代码。我知道“for (string word, int numb, ; cin>>word>>numb; )” 不起作用。只是想让你知道我想要做什么。我的目标是声明两种具有相同生命周期的变量并将它们放在一起。其他编码方式也很有帮助。提前致谢。
#include <iostream>
#include <vector>
#include <string>
#include <utility>
using namespace std;
int main ()
{
cout<<"enter a word and a number"<<endl;
for (string word, int numb, ; cin>>word>>numb; )
{
//do some work
}
return 0;
}
好的,我认为这是我能得到的最接近的人建议。
#include <iostream>
#include <vector>
#include <string>
#include <utility>
using namespace std;
int main ()
{
vector<pair<string,int> > pvec;
cout<<"enter a word and a number"<<endl;
{
int numb=0;
for (string word; cin>>word>>numb; )
pvec.push_back(make_pair(word,numb));
}
cout<<pvec[3].second<<endl;
return 0;
}
【问题讨论】:
-
什么不起作用?是编译失败吗?是否正在编译但给出不正确的结果?
-
for (string word, int numb, ; cin>>word>>numb; ) 这个语句。因为“字符串”也想将 int 声明为变量。
-
在以后的帖子中,请发布完整,最小的示例程序。虽然您的程序很小,但它并不完整。为什么让我们所有人重新输入三个缺失的标题行,而不是自己发布?有关完整的最小示例程序的更多信息,请参阅sscce.org。
-
@Rob:总的来说,我同意。在这种情况下,很明显(至少对我来说)上面的代码在语法上是无效的,并且 OP 想知道这样的事情是否可能。
-
谢谢,@OliCharlesworth。即使在这种情况下,我也很想看到确切的错误消息——这需要的不仅仅是我的简单复制、粘贴和编译。
标签: c++