0

私は初めて WinAPI を使用しています。UCHAR* を返す関数がありますが、UCHAR* として印刷しようとすると std:string として必要になりますが、それを実行すると印刷されます。多くの意味不明。この問題を解決する簡単な方法があるはずです。これをグーグルで検索しましたが、何も見つかりませんでした。ある種の文字列として機能しているように見えますが、UCHAR* が何であるかさえわかりません。署名されていない文字列へのポインターだと聞きましたが、それが何を意味するのかよくわかりません。

4

2 に答える 2

4

これはうまくいくはずです

char temp[5];
memcpy(temp, battery_info.Chemistry, 4);
temp[4] = '\0'; // add nul terminator
std::string s = temp; // convert to string

ソース データには必ずしも通常の nul ターミネータが含まれているとは限らないため、データを一時的な char 配列にコピーし、確認のために nul ターミネータを追加してから、std::string に変換しました。

于 2013-10-10T19:57:17.540 に答える
1

その構造のメンバーは null で終了していないため、次のようになります。

std::string chemistry(battery_info.Chemistry, battery_info.Chemistry + 4);

;を実行しなくても、必要な動作が得られますmemcpy

于 2013-10-10T20:14:29.730 に答える