📌  相关文章
📜  在C++中解析逗号分隔的字符串的程序(1)

📅  最后修改于: 2023-12-03 15:37:34.944000             🧑  作者: Mango

在C++中解析逗号分隔的字符串的程序

当我们需要处理以逗号分隔的字符串时,我们需要解析这些字符串以从中提取出有用的信息。在C++中,我们可以使用标准库提供的函数进行解析处理。

代码示例

下面是一个简单的例子,演示如何解析包含逗号分隔的字符串:

#include <iostream>
#include <sstream>
#include <vector>
#include <string>

int main()
{
    std::string input = "apple,orange,banana,grape";
    std::vector<std::string> tokens;
    std::istringstream ss(input);
    std::string token;

    while (std::getline(ss, token, ','))
    {
        tokens.push_back(token);
    }

    for (const auto& t : tokens)
    {
        std::cout << t << std::endl;
    }

    return 0;
}

在这个例子中,我们首先定义了一个包含逗号分隔的字符串"apple,orange,banana,grape"。接着,我们定义了一个字符串向量tokens,用来保存分隔开的字符串。然后,我们使用std::istringstream类来解析这个字符串。最后,我们将解析后的字符串逐个加入tokens向量中,并输出tokens向量中的每一个元素。

解析逗号分隔字符串的方法

使用std::getline函数可以方便地解析以逗号分隔的字符串。这个函数接受三个参数:输入流、字符串、和分隔符。

std::getline函数会从输入流中读取字符,直到遇到指定的分隔符。在本例中,我们指定的分隔符是','。一旦遇到分隔符,它就会自动停止读取,并将读取到的字符存储在输入的字符串中。然后,std::getline函数返回true,表示成功读取到一个字符串。如果没有读取到字符串,就会返回false。

这种解析逗号分隔字符串的方法有一个缺点,就是它只适用于逗号分隔的字符串。如果需要使用其他分隔符,就需要修改分隔符的参数。

取消空白符

在解析逗号分隔的字符串时,通常需要取消空白符,例如空格和制表符。下面是一个示例代码,演示如何在解析过程中删除空白符:

#include <iostream>
#include <sstream>
#include <vector>
#include <string>

int main()
{
    std::string input = "apple, orange, banana, grape";
    std::vector<std::string> tokens;
    std::istringstream ss(input);
    std::string token;

    while (std::getline(ss >> std::ws, token, ','))
    {
        tokens.push_back(token);
    }

    for (const auto& t : tokens)
    {
        std::cout << t << std::endl;
    }

    return 0;
}

在这个例子中,我们使用了std::ws参数来取消空白符。它是一个std::ios_base类型的标志,可以告诉std::getline函数在提取下一个字符串之前忽略所有前导空白符。