C++ 使用std::vector时出错<;标准::字符串>;myString

C++ 使用std::vector时出错<;标准::字符串>;myString,c++,string,vector,C++,String,Vector,嗨,我有点难以理解编译器说的话 [BCC32错误]frmNew.cpp(333):E2285找不到“std::getline(ifstream,std::vector>)的匹配项” 完整解析器上下文 cpp(303):解析:void _fastcalltfrmnewpeta::showDefaultRute() 我正在使用std::vectormysting存储字符串文件。但是这个代码 while(std::getline(ifs\u Awal,mystring))我得到了错误 这是我的完整代码

嗨,我有点难以理解编译器说的话

[BCC32错误]frmNew.cpp(333):E2285找不到“std::getline(ifstream,std::vector>)的匹配项” 完整解析器上下文 cpp(303):解析:void _fastcalltfrmnewpeta::showDefaultRute()

我正在使用
std::vectormysting
存储字符串文件。但是这个代码
while(std::getline(ifs\u Awal,mystring))
我得到了错误

这是我的完整代码

void __fastcall TFrmNewPeta::showDefaultRute()
{
    std::string mystring;
    std::ifstream ifs_Awal;
    int tempIndexAwal = 0;
    ifs_Awal.open("DefaultDataAwal");
    while (std::getline(ifs_Awal, mystring)) {++tempIndexAwal;}
    std::vector<std::string> mystring(tempIndexAwal);
    while (std::getline(ifs_Awal, mystring)) // error
    {
        mystring.push_back(mystring); // error
    }
    ifs_Awal.close();
}
void\uu fastcall TFrmNewPeta::showDefaultRute()
{
std::string mystring;
std::ifs_Awal的ifstream ifs_Awal;
int tempIndexAwal=0;
如果警报打开(“DefaultDataAwal”);
而(std::getline(ifs_Awal,mystring)){++tempIndexAwal;}
std::向量mystring(tempIndexAwal);
while(std::getline(ifs_Awal,mystring))//错误
{
mystring.push_back(mystring);//错误
}
如果自动关闭();
}

我使用C++ Builder 2010

在许多教程中,他们更喜欢使用std::vector将字符串存储到动态数组中。 所以我用了同样的方法,但是当我尝试使用std::vector时发生了这种情况

的第二个参数可以是
std::string
,但不能是
std::vector
。正如错误消息所示,这一点非常清楚

更新

std::vector<std::string> mystring(tempIndexAwal);
您没有发布如何声明
myline
,我想它是
std::vector

的第二个参数可以是
std::string
,但不能是
std::vector
。正如错误消息所示,这一点非常清楚

更新

std::vector<std::string> mystring(tempIndexAwal);

你没有发布你是如何声明myline的,我想这是因为你把错误的参数传递给了getline

mystring
不是一个应该的
std::string
,而是一个
std::vector
。因此线
std::getline(ifs\u Awal,mystring)
导致错误,因为第二个参数不是
std::string

还有,行

myline.向后推(mystring)

不起作用,因为
myline
可能是字符串的向量,您尝试将
vector
的元素推送到它


因此,如前所述,将
myline
更改为
std::string
就是答案。

将错误的参数传递给
getline

mystring
不是一个应该的
std::string
,而是一个
std::vector
。因此线
std::getline(ifs\u Awal,mystring)
导致错误,因为第二个参数不是
std::string

还有,行

myline.向后推(mystring)

不起作用,因为
myline
可能是字符串的向量,您尝试将
vector
的元素推送到它


因此,正如前面所建议的,将
myline
更改为
std::string
就是答案。

billz和tomi纠正了您传递的错误参数,因此我更改了您的代码。应该是

    void __fastcall TFrmNewPeta::showDefaultRute() {
    std::string lines;
    std::ifstream ifs_Awal;
    int tempIndexAwal = 0;
    ifs_Awal.open("DefaultDataAwal");

    /*get the strings and counting the lines*/
    while(std::getline(ifs_Awal,lines)){++tempIndexAwal;}

    std::vector<std::string> mystring(tempIndexAwal);

    while(std::getline(ifs_Awal,lines)) //put your 'lines' here
    {
        mystring.push_back(lines); // theres no error again :)
    }
    ifs_Awal.close();
    }
void\uu fastcall TFrmNewPeta::showDefaultRute(){
std::字符串行;
std::ifs_Awal的ifstream ifs_Awal;
int tempIndexAwal=0;
如果警报打开(“DefaultDataAwal”);
/*得到字符串并计算行数*/
而(std::getline(ifs_Awal,line)){++tempIndexAwal;}
std::向量mystring(tempIndexAwal);
while(std::getline(ifs_Awal,lines))//把你的“lines”放在这里
{
mystring.push_back(行);//再次没有错误:)
}
如果自动关闭();
}

billz和tomi对您传递的错误参数进行了更正,因此我更改了您的代码。应该是

    void __fastcall TFrmNewPeta::showDefaultRute() {
    std::string lines;
    std::ifstream ifs_Awal;
    int tempIndexAwal = 0;
    ifs_Awal.open("DefaultDataAwal");

    /*get the strings and counting the lines*/
    while(std::getline(ifs_Awal,lines)){++tempIndexAwal;}

    std::vector<std::string> mystring(tempIndexAwal);

    while(std::getline(ifs_Awal,lines)) //put your 'lines' here
    {
        mystring.push_back(lines); // theres no error again :)
    }
    ifs_Awal.close();
    }
void\uu fastcall TFrmNewPeta::showDefaultRute(){
std::字符串行;
std::ifs_Awal的ifstream ifs_Awal;
int tempIndexAwal=0;
如果警报打开(“DefaultDataAwal”);
/*得到字符串并计算行数*/
而(std::getline(ifs_Awal,line)){++tempIndexAwal;}
std::向量mystring(tempIndexAwal);
while(std::getline(ifs_Awal,lines))//把你的“lines”放在这里
{
mystring.push_back(行);//再次没有错误:)
}
如果自动关闭();
}

@BikaShad我很高兴,很高兴它有帮助@不客气,很高兴能帮上忙!嗨@Tomi.lee.jones,我意识到我用mystring作为字符串来声明向量是错误的。所以我按照你的建议修改了我的代码,谢谢你的建议hi@Tomi.lee.jones,我意识到我用mystring作为字符串来作为向量是错误的。所以我按照你的建议修改了我的代码,谢谢你的建议谢谢你把我的代码修改成正确的答案。我一直在按照你回答的方式做。谢谢,如果你愿意的话,我很高兴。您还可以使用vector
at()
的members函数来显示元素。示例
std::coutthanks将我的代码更改为正确答案。我一直在按照你回答的方式做。谢谢,如果你愿意的话,我很高兴。您还可以使用vector
at()
的members函数来显示元素。示例
std::cout