如何跳到 C++ 中 ofstream 对象的下一行

How to skip to next line in an ofstream object in c++

我正在尝试制作一个哈希程序,为您生成哈希。我知道以前有人做过,但我正在尝试重新创建它。我遇到的问题是我试图为每个散列添加日志并将其输出到“DataLog.txt”文件。到目前为止一切顺利!唯一的问题是我试图在每次输出到文本文件之前添加一个换行符。目前它将它写入文本文件,然后当它重复再次写入时它只是与之前的写入重叠。这是我到目前为止的文件输出代码。

     std::ofstream file;
        file.open("DataLog (2).txt");
        file << input << hash;
        file.close();

我的整个主要功能也列在下面。可能有点长,准备好吧。

int main() {
    
    while (1) {
        std::cout << "Welcome to SHA256 Generator! Please enter the string you would like to convert to a hash:" << std::endl;
        std::string input;
        std::cin >> input;
        std::cout << "Hash - " << sha256(input);
        auto hash = ConvertToString(sha256(input));

        std::ofstream file;
        file.open("DataLog (2).txt");
        file << input << hash;
        file.close();
        
        std::cout << std::endl;
        std::cout << std::endl;

        std::cout << "Would you like to convert another hash? Please enter either yes or no for your respose." << std::endl;
        std::string response;
        std::cin >> response;
        if (response == "no")
            return 0;
        while (response != "yes" ) {
            std::cout << std::endl;
            std::cout << "Sorry I didn't get that. Can you try typing either yes or no again?" << std::endl;
            std::string responseRepeat;
            std::cin >> responseRepeat;     
            if (responseRepeat == "yes" || responseRepeat == "no") {
                clear();
                break;
            }
        }
        clear();
    }
    return 0;
}

啊,我明白了,你想在每行之前加一行。我想你要找的是 file << input << hash;

因此,由于 file 是您的 fstream 输出,您可以将其视为 cout。所以这里的解决方案是 file << input << hash << endl;

如果您不希望文本被覆盖,请确保按 file.open(filename, ios::app); 以追加模式打开文件。