21xrx.com
2024-11-22 07:23:56 Friday
登录
文章检索 我的文章 写文章
C++如何读取一行输入
2023-07-02 05:48:42 深夜i     --     --
C++ 读取 输入 一行

在C++中,读取一行输入往往是我们需要使用到的一项基本操作。它可以应用于许多场景,比如读取一个字符串,或者读取一个由空格隔开的数字序列。下面,我们将介绍几种C++中读取一行输入的方法。

1. 使用getline函数

C++中的getline函数可以读取一行字符串输入。其基本用法为:


#include <iostream>

#include <string>

using namespace std;

int main() {

  string s;

  getline(cin, s);

  cout << s << endl;

}

这段代码中,我们首先引入了iostream和string两个库。然后,定义了一个名为s的字符串变量。接着,使用getline函数从标准输入流中读取一行输入,将其存储到s中,并输出s的值。

需要注意的是,getline函数会读入整行字符串,包括行末的换行符。如果需要去掉字符串末尾的换行符,可以使用以下代码:


getline(cin, s);

if (!s.empty() && s[s.length()-1] == '\r') {

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

}

这段代码中,我们判断了字符串s是否已经不为空,并且最后一个字符是否等于换行符。如果满足条件,则使用s.erase函数删除字符串末尾的字符。

2. 使用cin.getline函数

除了getline函数以外,C++中还有一个getline函数可以用于读取一行输入。cin.getline函数的基本用法为:


#include <iostream>

using namespace std;

int main() {

  char s[100];

  cin.getline(s, 100);

  cout << s << endl;

}

这段代码中,我们定义了一个字符数组s,长度为100。然后,使用cin.getline函数从标准输入流中读取一行输入,将其存储到字符数组s中,并输出s的值。

与getline函数不同的是,cin.getline函数不会读入行末的换行符,因此也无需进行额外操作。

3. 使用stringstream函数

最后,我们介绍一种使用stringstream函数读取一行输入的方法。stringstream函数可以将一个字符串转换成多个变量,并存储在一个vector中。因此,我们可以使用stringstream函数先将一行输入转换成一个字符串,再将字符串拆分成多个变量。

下面是一个使用stringstream函数读取由空格隔开的数字序列的例子:


#include <iostream>

#include <sstream>

#include <vector>

using namespace std;

int main() {

  string s;

  getline(cin, s);

  stringstream ss(s);

  vector<int> nums;

  int num;

  while (ss >> num) {

    nums.push_back(num);

  }

  for (int i = 0; i < nums.size(); i++) {

    cout << nums[i] << " ";

  }

  cout << endl;

}

这段代码中,我们首先使用getline函数读取一行输入,并将其存储到字符串s中。接着,使用stringstream函数将字符串s转换成一个stringstream类型的对象ss。然后,定义一个vector 类型的变量nums,以及一个int类型的变量num。在while循环中,我们不断地将ss中的数值读入到变量num中,并将其存储到nums中。最后,我们使用for循环输出nums中的所有数值。

需要注意的是,stringstream函数中的运算符>>会从字符串中读取数值,并将其存储到对应类型的变量中。当读取完所有数值以后,运算符>>会返回false,此时while循环结束。

  
  

评论区

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