📅  最后修改于: 2023-12-03 14:57:17.398000             🧑  作者: Mango
在C++中,获取行的方法有很多种。我们可以使用标准库的函数,也可以使用第三方库或自己编写函数来实现。
最简单的方法是使用getline函数。getline函数可以从输入流中读取一行数据,并将其存储在一个字符串变量中。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string line;
// 从标准输入中读取一行数据
getline(cin, line);
// 输出读取的行
cout << "Line: " << line << endl;
return 0;
}
上面的程序会从标准输入中读取一行数据,并将其输出到控制台上。
注意,getline函数会在读取到换行符之前读取输入内容,并且不会将换行符存储在字符串变量中。
另一种获取行的方法是使用fgets函数。fgets函数可以从输入流中读取一行数据,并将其存储在一个字符数组中。
#include <cstdio>
int main()
{
char line[100];
// 从标准输入中读取一行数据
fgets(line, sizeof(line), stdin);
// 输出读取的行
printf("Line: %s", line);
return 0;
}
上面的程序会从标准输入中读取一行数据,并将其输出到控制台上。
注意,fgets函数会将换行符存储在字符数组中,并且需要手动将其去掉。
除了使用标准库的函数,我们还可以使用第三方库来获取行。比如使用Boost库的split函数。
#include <iostream>
#include <string>
#include <boost/algorithm/string.hpp>
using namespace std;
using namespace boost;
int main()
{
string line;
// 从标准输入中读取一行数据
getline(cin, line);
// 使用split函数将字符串分割成字符串向量
vector<string> words;
split(words, line, is_any_of(" \t"));
// 输出读取的行
cout << "Words:" << endl;
for (size_t i = 0; i < words.size(); i++)
{
cout << "\t" << words[i] << endl;
}
return 0;
}
上面的程序会从标准输入中读取一行数据,并使用split函数将其分割成单词,然后将每个单词输出到控制台上。
最后,我们还可以自己编写函数来获取行。下面是一个获取行的函数示例:
#include <iostream>
#include <string>
using namespace std;
string get_line(istream& in)
{
string line;
getline(in, line);
return line;
}
int main()
{
// 从标准输入中读取一行数据
string line = get_line(cin);
// 输出读取的行
cout << "Line: " << line << endl;
return 0;
}
上面的程序中,我们定义了一个get_line函数来获取行。这个函数接受一个输入流作为参数,然后使用getline函数从输入流中读取一行数据,并将其返回。
注意,这个函数可以用于从任何输入流中获取行,不仅限于标准输入流。