C++ 试图从文本文件中读取向量 while(艺术家>>forname>>姓氏>>bandnum) { 对于(int i=0;i>band[i]; } 对于(int i=0;i>bandnum;i++) { 角色;

C++ 试图从文本文件中读取向量 while(艺术家>>forname>>姓氏>>bandnum) { 对于(int i=0;i>band[i]; } 对于(int i=0;i>bandnum;i++) { 角色;,c++,vector,text-files,C++,Vector,Text Files,下面的代码是我如何尝试从文本文件中读取向量的,如下所示 约翰·史密斯是一名b-c歌手 顺序必须以名字、第二个名字、乐队编号、他们演奏的乐队以及他们的角色来读出。Artist是ifstream,bandnum是他们演奏的乐队数量,带有“a b c”作为他们的乐队。乐队是一个向量,因为乐队的数量以及他们为每个艺术家演奏的乐队都会发生变化。当我尝试运行此功能时,代码会显示“矢量下标超出范围”。我能做些什么来修复此问题?猜测一下,您没有正确调整乐队的大小(例如,它的大小为零)。您可能需要使用push_b

下面的代码是我如何尝试从文本文件中读取向量的,如下所示

约翰·史密斯是一名b-c歌手


顺序必须以名字、第二个名字、乐队编号、他们演奏的乐队以及他们的角色来读出。
Artist
是ifstream,
bandnum
是他们演奏的乐队数量,带有“a b c”作为他们的乐队。
乐队是一个向量,因为乐队的数量以及他们为每个艺术家演奏的乐队都会发生变化。当我尝试运行此功能时,代码会显示“矢量下标超出范围”。我能做些什么来修复此问题?

猜测一下,您没有正确调整乐队的大小(例如,它的大小为零)。您可能需要使用
push_back
将项目添加到向量中

    while (artist >> forname >> surname >> bandnum)
{
for (int i = 0; i <= bandnum; i++)
{
artist >> band[i];
}
for (int i = 0; i > bandnum; i++)
{
cout << band[i];
}
artist >> role;
while(艺术家>>forname>>姓氏>>bandnum)
{
对于(int i=0;i>tmp;
波段推回(tmp);
}
艺术家>>角色;
}

两种循环条件都没有多大意义。我认为在这两种情况下,您都希望
band.size()>=bandnum
true?您的帖子不包含任何设置其大小的内容。@Shawn是的,它是equalGood。下一步修复前面提到的for循环问题。这样做了,但它甚至没有进入第二个循环,它在'Artister>>band[i];'处中断;
while (artist >> forname >> surname >> bandnum)
{
    for (int i = 0; i < bandnum; i++)
    {
        string tmp;
        artist >> tmp;
        band.push_back(tmp);
    }
    artist >> role;
}