C++ 使用std::vector时出错<;标准::字符串>;myString
嗨,我有点难以理解编译器说的话 [BCC32错误]frmNew.cpp(333):E2285找不到“std::getline(ifstream,std::vector>)的匹配项” 完整解析器上下文 cpp(303):解析:void _fastcalltfrmnewpeta::showDefaultRute() 我正在使用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))我得到了错误 这是我的完整代码
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作为字符串来作为向量是错误的。所以我按照你的建议修改了我的代码,谢谢你的建议谢谢你把我的代码修改成正确的答案。我一直在按照你回答的方式做。谢谢,如果你愿意的话,我很高兴。您还可以使用vectorat()
的members函数来显示元素。示例std::coutthanks将我的代码更改为正确答案。我一直在按照你回答的方式做。谢谢,如果你愿意的话,我很高兴。您还可以使用vectorat()
的members函数来显示元素。示例std::cout