【问题标题】:get substring from C string in C++在 C++ 中从 C 字符串中获取子字符串
【发布时间】:2015-11-29 19:59:01
【问题描述】:

我有 C 字符串

   char s[] = "n1=1&n2=2&name=test&sername=test2";

我需要从字符串中取值名称,即“test”并写在一个单独的变量中。

所以我需要找到 "&name=" 和下一个 & 之间的值

【问题讨论】:

  • 你可以建立一个std::string 并使用substr
  • 因此您将使用strlen() 查找结束迭代器,std::search() 查找参数开始的位置,并使用std::find() 查找结束的位置。你的问题到底是哪一部分?
  • 可以将指针当成数组使用。
  • FWIW,s 应该是 const 这里。
  • 作为一个通用的解决方案,您可以首先在& 上拆分以获取pairs 的集合(a=b),然后在= 上拆分以获取每对的键和值.

标签: c++ string substring


【解决方案1】:

因为您将其标记为 C++,所以我将使用 std::string 代替:

char s[] = "n1=1&n2=2&name=test&sername=test2";
string str(s);
string slice = str.substr(str.find("name=") + 5);

string name = slice.substr(0, slice.find("&"));

您也可以使用正则表达式执行此操作并一次捕获所有这些值,还可以节省创建字符串的时间。

char s[] = "n1=1&n2=2&name=test&sername=test2";

std::regex e ("n1=(.*)&n2=(.*)&name=(.*)&sername=(.*)");
std::cmatch cm;
std::regex_match(s,cm,e);

cout << cm[3] << endl;

【讨论】:

  • 谢谢。正是我需要的。
猜你喜欢
  • 2011-05-25
  • 2012-01-26
  • 2018-09-29
  • 2011-11-05
  • 1970-01-01
  • 2011-12-27
  • 1970-01-01
相关资源
最近更新 更多