Difference between revisions of "cpp/io/c/remove"
From cppreference.com
RobStewart (Talk | contribs) (Rephrasing to remove comma splice, fix whitespace, etc. s/fname/pathname/ for accuracy.) |
m (→Example: rm static_cast unnecessary) |
||
Line 20: | Line 20: | ||
[https://pubs.opengroup.org/onlinepubs/9699919799/functions/remove.html POSIX specifies] many additional details for the behavior of this function. | [https://pubs.opengroup.org/onlinepubs/9699919799/functions/remove.html POSIX specifies] many additional details for the behavior of this function. | ||
− | The standard library also defines a function template {{ltt|cpp/algorithm/remove|std::remove}} taking a pair of iterators and a value, this overload is one of the standard | + | The standard library also defines a function template {{ltt|cpp/algorithm/remove|std::remove}} taking a pair of iterators and a value, this overload is one of the standard {{lt|cpp/algorithm}}s. |
===Example=== | ===Example=== | ||
Line 32: | Line 32: | ||
int main() | int main() | ||
{ | { | ||
− | + | // create a file, check success using operator! of temporary stream object | |
− | + | if (!std::ofstream("file1.txt").put('a')) | |
{ | { | ||
std::perror("Error creating file1.txt"); | std::perror("Error creating file1.txt"); |
Latest revision as of 10:54, 5 January 2024
Defined in header <cstdio>
|
||
int remove( const char* pathname ); |
||
Deletes the file identified by the character string pointed to by pathname.
If the file is currently open by any process, the behavior of this function is implementation-defined. POSIX systems unlink the file name (directory entry), but the filesystem space used by the file is not reclaimed while it is open in any process and while other hard links to the file exist. Windows does not allow the file to be deleted in such cases.
Contents |
[edit] Parameters
pathname | - | pointer to a null-terminated string containing the path identifying the file to delete |
[edit] Return value
0 upon success or non-zero value on error.
[edit] Notes
POSIX specifies many additional details for the behavior of this function.
The standard library also defines a function template std::remove taking a pair of iterators and a value, this overload is one of the standard algorithms.
[edit] Example
Run this code
#include <cstdio> #include <cstdlib> #include <fstream> #include <iostream> int main() { // create a file, check success using operator! of temporary stream object if (!std::ofstream("file1.txt").put('a')) { std::perror("Error creating file1.txt"); return EXIT_FAILURE; } std::cout << std::ifstream("file1.txt").rdbuf() << '\n'; // print file std::remove("file1.txt"); // delete file if (!std::ifstream{"file1.txt"}) // uses operator! of temporary stream object { std::perror("Error opening deleted file"); return EXIT_FAILURE; } return EXIT_SUCCESS; }
Possible output:
a Error opening deleted file: No such file or directory
[edit] See also
(C++17)(C++17) |
removes a file or empty directory removes a file or directory and all its contents, recursively (function) |
renames a file (function) | |
C documentation for remove
|