私はstd::vector
いくつかの文字列を格納するためにを使用していますが、後でstd::find
それらを試しますが、サンプルコードに示されているように、strdupを通過します。これは機能せず、std::find
最後に戻ります。つまり、文字列が見つかりませんでしたが、そこで、関数を介してアクセスすると、std::vector::at
正しく表示されます。何が問題ですか?
#include <iostream>
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <stdint.h>
#include <string.h>
int main()
{
std::vector<char*> signal_list;
std::vector<char*>::iterator it;
char *temp;
char *temp2;
signal_list.push_back("DDF_LTEsyn__CALLER");
signal_list.push_back("DDF_LTEsyn__FFT_ctrl");
signal_list.push_back("DDF_LTEsyn__IFFT_ctrl");
signal_list.push_back("DDF_LTEsyn__ae_ctrl");
signal_list.push_back("DDF_LTEsyn__cwp_ctrl");
signal_list.push_back("DDF_LTEsyn__decision_ctrl");
signal_list.push_back("DDF_LTEsyn__ovelap_ctrl");
signal_list.push_back("DDF_LTEsyn__pilots_ctrl");
signal_list.push_back("DDF_LTEsyn__pre_ctrl");
signal_list.push_back("DDF_LTEsyn__rep_ctrl");
temp2 = strdup(signal_list.at(3));
printf("There is %s at position %d\n",temp2, 3);
it = find(signal_list.begin(), signal_list.end(), temp2);
printf("i found %s at position %d ",temp2, it - signal_list.begin());
}