char*をaからstd::stringと比較しようとしています
const char *s = "0@s072116\tblah\tblah\blah";
std::string id = "072116";
基本的に、左側の最初の\tの前と最初の3文字の後でこれら2つを比較する必要があります。IDの幅はさまざまです。:(
私はC++があまり得意ではありません。何か案は??
ありがとう
char*をaからstd::stringと比較しようとしています
const char *s = "0@s072116\tblah\tblah\blah";
std::string id = "072116";
基本的に、左側の最初の\tの前と最初の3文字の後でこれら2つを比較する必要があります。IDの幅はさまざまです。:(
私はC++があまり得意ではありません。何か案は??
ありがとう
あなたは次のようにそれを行うことができます:
#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"
、一致させてはならない)要件である場合、提供されているコードサンプルでは不十分です。
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';