C ++将const char *与std :: string进行比较

时间:2012-11-22 20:11:04

标签: c++

我正在尝试将char *与a比较为std :: string

const char *s = "0@s072116\tblah\tblah\blah";
std::string id = "072116";

我需要比较这两个,基本上在第一个\ t之前和之后的前三个字符之后。 id的宽度可以变化。 :(

我不擅长C ++。任何想法??

由于

2 个答案:

答案 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;
}

如果idss中的子字符串,则found将成为idss第一次出现的位置。

如果id不是ss中的子字符串,则found将为负数。

find上的

More examples

警告:

上面的代码基于假设你的意思“...基本上在第一个\ 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';