21xrx.com
2024-12-22 21:23:07 Sunday
登录
文章检索 我的文章 写文章
如何在C++中读取换行符?
2023-07-06 11:34:44 深夜i     --     --
C++ 读取 换行符

在C++中读取换行符可能会带来一些困难,因为缓冲区中可能有一些其他字符或空格等。但是,有一些简单的方法可以帮助我们在C++中正确读取换行符。

首先,要读取除换行符以外的字符,可以使用 `getline()` 函数,该函数会忽略输入流中的任何空格字符,并将第一个字符串中没有读取的字符留在输入队列中。 调用 getline 函数时也会读取换行符,因此我们需要将这个换行符从输入流中删除。

下面是一个以此方式读取换行符的示例代码:


#include <iostream>

#include <string>

using namespace std;

int main() {

  string name;

  string line;

  getline(cin, name);

  getline(cin, line);

  // 删除换行符

  if (line.length() > 0 && line[line.length() - 1] == '\r') {

    line.erase(line.length() - 1);

  }

  // 输出结果

  cout << "姓名:" << name << endl;

  cout << "内容:" << line << endl;

  return 0;

}

使用 `std::cin` 将以前的输入头和换行符一起读取,使用 `getline()` 将其分配到一个字符串中,利用 `substr()` 强制分解以前的输入头和换行符。


#include <iostream>

#include <string>

using namespace std;

int main() {

  string name, temp;

  getline(std::cin, name);

  for(int i = 0; i < name.length(); ++i) { // 剔除头部多余空格

    if(name[i] == ' ') {

      name = name.substr(i + 1);

      break;

    }

  }

  getline(std::cin, temp);

  getline(std::cin, temp);

  std::cout << name << "喜欢" << temp << std::endl;

  return 0;

}

除此之外,如果想要读取任何以空格和换行符分隔的字符串,可以使用 `std::cin` 读取字符串,并手动解析它以查找换行符。其中一个常用的方法是使用 `std::getline()` 函数,该函数可以使我们检测到换行符并将其从输入缓冲区中删除,而不是将其读入到字符串中。


#include <iostream>

#include <string>

using namespace std;

int main() {

  string name;

  string content;

  cin >> name;

  getline(cin, content);

  getline(cin, content);

  cout << "Name: " << name << endl;

  cout << "Content: " << content << endl;

  return 0;

}

在读取输入时,我们需要注意总是要读取换行符,以避免行末字符被留在输入队列中。这可以通过立即读取剩余的字符,直到换行符 `'\n'` 出现,来实现。

总之,读取换行符可能有一些挑战,但使用 `getline()` 函数可以忽略中间的空格并在读取函数末尾处正确解析换行符。以上是在C++中正确读取换行符的一些方法,希望有所帮助。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复