我正在尝试将char *与a比较为std :: string
const char *s = "0@s072116\tblah\tblah\blah";
std::string id = "072116";
我需要比较这两个,基本上在第一个\ t之前和之后的前三个字符之后。 id的宽度可以变化。 :(
我不擅长C ++。任何想法??
由于
答案 0 :(得分:4)
您可以按照以下方式执行此操作:
#include <iostream>
#include <string>
using namespace std;
...
int main() {
const char *s = "0@s072116\tblah\tblah\blah";
string ss = s;
string id = "072116";
int found = ss.find(id);
cout << "found is: " << found;
}
如果id
是ss
中的子字符串,则found
将成为id
中ss
第一次出现的位置。
如果id
不是ss
中的子字符串,则found
将为负数。
find
上的
警告:
上面的代码基于假设你的意思“...基本上在第一个\ t之前和之后的第一个3个字符之后......”作为指出哪里的一种方式在这个特定的例子中,子串将匹配。
如果要求所有实例都必须满足要求(即const char *s = "0@s\tblah\tblah\blah072116"
不匹配),那么提供的代码示例是不够的。
答案 1 :(得分:0)
const char *position = std::search(s, s + std::strlen(s), id.begin(), id.end());
if (*position == '\0')
std::cout << "Not found\n";
else
std::cout << "Found at offset " << (position - s) << '\n';