c++ - 如何在 C++ 中删除换行符

标签 c++ io ascii

我需要从 main 调用一个函数。该函数的副作用是打印一个新的行字符。有什么方法可以删除那个字符吗?

程序如下:

#include "header_file.h"
#include <stdio.h>

int main() {
  for (int i=0; i<1e5; i++) {
    int A = HEADER_SPACE::func_linebreak();
    printf("\b");
  }
  printf("1234");
  return 0;
}

不知道是不是cout << endl;printf("\n");func_linebreak()功能。不知道有没有fflush(stdout);里面。

可以肯定的是,我总是运行带有输出重定向的二进制/exe 文件:./my_main.out >> outFile.txt在 Linux 系统中。

This帖子在这里不起作用。


事实证明,最方便删除换行符的方法是从一开始就禁用打印。幸运的是,在我当前的应用程序中,我能够做到这一点。

我的问题已经解决了,但是我不会删除这个帖子,因为可能会出现源代码不可用的情况,而有些人可能仍然想达到同样的目的。

最佳答案

在 Linux 上,您可以 use the dup2() system call更改 stdoutstderr(即文件描述符 1 和 2)。要丢弃输出,您只需打开 /dev/null 并复制到它即可。

关于c++ - 如何在 C++ 中删除换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49186076/

相关文章:

c++ - ostream 是如何管理内存的?

c++ - 单一与共享所有权的含义

C++模板代码解释

io - 使用 Lua I/O 函数创建新文件

java - java中filewriter的flush和close函数的区别

c# - 一个对象应该将自己写到一个文件中,还是应该由另一个对象作用于它来执行 I/O?

mysql - 无法通过导入向导将 CSV 文件加载到 MySql Workbench

c++ - 为什么 std::basic_string 的成员在 VS2010 中是公开的?

c - ASCII 字符串和字节顺序

java - 在java中添加两个char数据类型