使用 std::vector<std::string> myString 时出错
Error Using std::vector<std::string> myString
嗨,我有点难以理解编译器在说什么:
[BCC32 错误] frmNew.cpp(333): E2285 找不到 'std::getline<_Elem,_Traits,_Alloc>(ifstream,std::vectorstd::string,std::allocator<std::string>)' 的匹配项完整解析器上下文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++生成器 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>
.
比尔兹和托米纠正了你传递错误的论点,所以我改变了你的代码。
应该是 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();
}
你把错误的参数传递给getline
。
mystring
不是应有的std::string
,而是std::vector
.因此行 std::getline(ifs_Awal,mystring)
会导致错误,因为第二个参数未std::string
。
另外,线
myline.push_back(mystring)
不起作用,因为myline
可能是字符串的向量,并且您尝试将vector<string>
元素推送到它。
因此,正如已经建议的那样,将myline
更改为std::string
就是答案。
- 使用std::multimap迭代器创建std::list
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 从持续时间构造std::chrono::system_clock::time_point
- std::具有相同基类的类的变体
- std::向量与传递值的动态数组
- 使用std::vector的OpenCL矩阵乘法
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- std::condition_variable::wait()如何评估给定的谓词
- 如何获取std::result_of函数的返回类型
- std::原子加载和存储都需要吗
- 将对象移动到std::shared_ptr
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 使用一个考虑到std::map中键值的滚动或换行的键
- 如何从 std::atomic 中提取指针 T<T>?
- 为什么 std::unique 不调用 std::sort?
- 使用std::函数映射对象方法
- 使用 std::vector<std::string> myString 时出错