如果不存在,则c ++将文件添加到文件中

时间:2014-07-14 22:46:45

标签: c++ ifstream getline

我正在创建一个添加数据的应用程序,但我正在尝试添加一个数据检查,检查添加的特定数据是否已经存在,然后它不会添加到文件中。 这是我所拥有的,但到目前为止它没有工作,没有错误,但它只是添加已存在的数据:

void checklog(const std::string& input){
    ifstream iFile("C:\\Users\\Seann\\Documents\\storedData\\data.txt");
    string line;
    while(getline(iFile, line)){
        if(input!=line){
        iFile.close();
        updateLog(input);}
    }
}

提前感谢任何认真的答案。

2 个答案:

答案 0 :(得分:1)

如果要检查单词的每一行,您应该创建如下内容:

std::vector<std::string> fileInput;

int i = 0;

while (std::getline(iFile, fileInput[i])
i++;

i = 0;
bool found_string = false;

while (i < input.size())
{
if (string_that_you_wanted_to_compare == fileInput[i])
found_string = true;
}

if (found_string)
{ do whatever }

或类似的东西。

答案 1 :(得分:0)

您的if ... else尝试仍在其读取的第一行做出决定,并且在您找到该单词之前不会循环。试试这个:

void checklog(const std::string& input){
    ifstream iFile("data.txt");
    string line;
    bool found = false; 
    while (!found && getline(iFile, line)){
        if (input == line)
            found = true;
    }
    iFile.close();
    if (found)
        updateLog(input);
}