如何拆分字符串?

时间:2011-03-08 09:00:27

标签: c++ c

  

可能重复:
  Is There A Built-In Way to Split Strings In C++?

我有一个字符串变量,其中包含: string var =“this_is.that_alos”我怎么能只从它中分离出“that_alos”。 即在“that_alos”之后我只需要第二部分

6 个答案:

答案 0 :(得分:3)

std::string var = "this_is.that_alos";
std::string part = var.substr(var.find_first_of('.'));

如果您要排除'.',只需添加1:

std::string part = var.substr(var.find_first_of('.') + 1);

答案 1 :(得分:2)

在C中,通常的函数是strchr(3)

char * second_half = strchr(var, '.');

当然,这只是一个指向字符串中间的新指针。如果您开始写入此字符串,它将更改它的唯一副本,char *var也指向该副本。 (再次,假设C。)

答案 2 :(得分:0)

std::string var = "this_is.that_alos";

std::string::iterator start = std::find(var.begin(), var.end(), '.')
std::string second(start + 1, var.end());

但如果start + 1不包含任何点,您应该检查var.end()是否不是var

答案 3 :(得分:0)

如果您不想使用字符串索引或迭代器,可以使用std::getline

std::string var = "this_is.that_alos";
std::istringstream iss(var);

std::string first, second;

std::getline(iss, first, '.');
std::getline(iss, second, '.');

答案 4 :(得分:0)

使用strtok分割字符串,特殊字符为“。” 对于前

string var = "this_is.that_alos";
string Parts[5] = strtok(&var[0],".");
string SubPart = Parts[1];

希望它能帮助你。

答案 5 :(得分:0)

最简单的解决方案是使用boost :: regex(很快就会成为 的std ::正则表达式)。目前尚不清楚具体要求是什么, 但是使用正则表达式很容易指定它们。

否则(并且可以考虑使用正则表达式 这个过度杀戮),我会使用通常的算法,这些算法适用于 任何序列。在这种情况下,std :: find会找到第一个'。', 使用反向迭代器来查找最后一个等等。

- 詹姆斯坎泽