![](/img/trans.png)
[英]using std::vector<std::string*> and std::vector<std::ofstream*>
[英]Error Using std::vector<std::string> myString
嗨,我有点难以理解编译器的内容
[BCC32错误] frmNew.cpp(333):E2285找不到与'std :: getline <_Elem,_Traits,_Alloc>(ifstream,std :: vector>)'匹配的完整解析器上下文frmNew.cpp(303):解析:void _fastcall TFrmNewPeta :: showDefaultRute()
我正在使用std::vector<std::string>mystring
来存储我的字符串文件。 但是这段代码while (std::getline(ifs_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();
}
我正在使用C ++ Builder 2010
在许多教程中,他们更喜欢使用std :: vector将字符串存储到动态数组。 所以我做了同样的方法,但是当我尝试使用std :: vector <>
std::getline
第二个参数可以是std::string
但不能是std::vector<std::string>
。 错误消息显示很清楚。
更新
std::vector<std::string> mystring(tempIndexAwal);
至:
std::string mystring;
您不发布如何声明myline
,我想它是std::vector<std::string>
。
您对getline
传递错误的论点。
mystring
不是应该的std::string
,而是std::vector
。 因此std::getline(ifs_Awal,mystring)
由于第二个参数不是std::string
std::getline(ifs_Awal,mystring)
因此std::getline(ifs_Awal,mystring)
会导致错误。
还行
myline.push_back(mystring)
之所以myline
是因为myline
可能是字符串的向量,并且您尝试将vector<string>
的元素推入其中。
因此,正如已经建议的那样,将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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.