使用 Stringstream 分隔逗号分隔的字符串
在 C 中,stringstream 是操作字符串和提取数据的强大工具。虽然它可以轻松分隔以空格分隔的字符串,但逗号分隔的字符串需要稍微修改一下方法。
原始方法:
以下代码演示了使用 stringstream 的原始方法来分隔字符串空格:
std::string str = "abc def,ghi"; std::stringstream ss(str); string token; while (ss >> token) { printf("%s\n", token.c_str()); }
输出:
abc def,ghi
此方法无法分隔逗号分隔的标记,因为 >> stringstream 中的运算符假定空格字符作为分隔符。
修改方法:
要分隔逗号分隔的字符串,我们可以利用 stringstream 提供的 getline() 函数。该函数允许我们读取字符串,直到遇到指定的分隔符。下面是修改后的代码:
#include <iostream> #include <sstream> std::string input = "abc,def,ghi"; std::istringstream ss(input); std::string token; while(std::getline(ss, token, ',')) { std::cout << token << '\n'; }
输出:
abc def ghi
解释:
getline() 函数读取输入字符串 ss 并提取一个标记,直到我们指定为的字符第一次出现为止分隔符(这里是逗号)。然后,它将提取的令牌分配给令牌字符串,如果成功则返回 true。通过重复调用 getline(),我们可以迭代输入字符串中以逗号分隔的标记。
这种方法有效地将逗号分隔的字符串分隔为单独的标记,从而允许在程序中进行进一步处理或操作。
以上是如何使用 stringstream 在 C 中有效分隔逗号分隔的字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!