如何跳到 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);
以追加模式打开文件。
我正在尝试制作一个哈希程序,为您生成哈希。我知道以前有人做过,但我正在尝试重新创建它。我遇到的问题是我试图为每个散列添加日志并将其输出到“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);
以追加模式打开文件。