gpt4 book ai didi

c++ - vector 元素和 txt 文件行之间的字符串比较不起作用

转载 作者:行者123 更新时间:2023-11-28 03:40:09 25 4
gpt4 key购买 nike

while (file.good())
{
for (vector <string>::iterator i = v1.begin(); i != v1.end();)
{
getline(file, sTmp);
if (sTmp != *i)
{
v2.push_back(sTmp);
}
++i;
}
}

我已经用当前目录中的文件名填充了 v1,只想从 txt 文件中插入与 v1 元素不匹配的名称(v1 和 v2 是字符串 vector )。上面的代码看起来合乎逻辑但不起作用。我从 v2 中的 txt 文件中获取所有文件,而不是不同的文件。

有什么问题吗?

最佳答案

您的代码有几个问题。你看到的那个到期了事实上,您从文件中为每个元素读取了一个新行v1,并将该行与 v1 中的当前元素进行比较;你可能想将 getline 移出内部循环,一些东西喜欢:

std::string line;
while ( std::getline( file, line ) ) {
std::vector<std::string>::const_iterator pos
= std::find( v1.begin(), v1.end(), line );
if ( pos != v1.end() ) {
v2.push_back( line );
}
}

这也解决了第二个主要问题:您没有测试在使用其结果之前调用 getline 成功。(std::ios_base::good() 可能是最没用的函数了标准。我还没有找到调用它的情况合适。)

关于c++ - vector 元素和 txt 文件行之间的字符串比较不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9539026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com