📜  获取行 C++ (1)

📅  最后修改于: 2023-12-03 14:57:17.398000             🧑  作者: Mango

C++获取行的方法

在C++中,获取行的方法有很多种。我们可以使用标准库的函数,也可以使用第三方库或自己编写函数来实现。

使用getline函数

最简单的方法是使用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函数。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函数从输入流中读取一行数据,并将其返回。

注意,这个函数可以用于从任何输入流中获取行,不仅限于标准输入流。