0

char*をaからstd::stringと比較しようとしています

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

基本的に、左側の最初の\tの前と最初の3文字の後でこれら2つを比較する必要があります。IDの幅はさまざまです。:(

私はC++があまり得意ではありません。何か案は??

ありがとう

4

2 に答える 2

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"、一致させてはならない)要件である場合、提供されているコードサンプルでは不十分です。

于 2012-11-22T20:14:10.863 に答える
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';
于 2012-11-22T21:19:41.690 に答える