私はそれがうまくいくことを知っています。私はそれを送信すれば何が起こるかにもっと関心があります。パラメータをchar*
に変更してから、それを自分で変換したほうが良いですか?to_String?
または、予期しないエラーが長期的に発生するという意味で、このままですか? std::string
以来入力パラメータが文字列の関数にchar配列を送るとどうなりますか?
1
A
答えて
3
std::string
は、この場合の世話をするコンストラクタを持って見ます起こる。タイプTは、タイプU(例えば、T :: T(U))の単一のパラメータを取り、次に、コンパイラは、コードが暗黙的型Uへ変換することを可能にするコンストラクタを有する
1
は、コンパイラがそれを使用すると、あなたがstd::string
引数としてconst char*
を通過できるように十分にスマートであるconst char*
を受け取るコンストラクタを持っています。
string (const char* s);
次の作業になりその:長くないとすぐs
がNULL
ないよう
char *s = "Hello, World!";
std::string str(s);
を実行エラーをしますhttp://en.cppreference.com/w/cpp/language/implicit_conversion
0
、 T.
を入力すると、次のコード
struct U
{
//etc.
}
struct T
{
T(U obj);
//etc.
}
my_func(T param);
int main()
{
U u;
my_func(u);
}
コンパイラは「my_func(U)」になるとmy_funcはタイプTのパラメータを期待していること確認すると、それはT.のコンストラクタを見てを考えてみましょうそれはコンストラクタ "T(U obj);"を見て、それをiそのような関数呼び出し中のn-場所:
//...
int main()
{
U u;
my_func(T(u));
}
それが事故に行われている場合は、意図的に対立するものとして、いくつかの困難なデバッグにつながることができ、これは完全に黙っに行われていることに注意することが重要です。
関連する問題
- 1. 文字列をcharに代入するとどうなりますか?
- 2. 構造体のchar配列とユーザー入力文字配列の比較
- 3. 文字列をchar配列にしようとすると、配列に必要な文字だけを手に入れることができます
- 4. C++関数パラメータのcharポインタと文字列
- 5. は、文字列をバイト配列に変換し、入力文字列がのようになり、バッチファイルで
- 6. リテラル文字列にchar配列を代入する - C++
- 7. char配列に文字列が含まれていますか?
- 8. 関数パラメータがchar配列、const文字列、文字列mallocデータへのポインタであることを確認できますか?
- 9. Laravel配列の入力 - htmlentities()は、パラメータ1が文字列であると仮定します。配列は
- 10. ユーザーが入力した文字列を定数charを必要とする関数に渡す問題*
- 11. 文字列を入力し、文字列が配列内の任意の文字列と一致するかどうかを確認する(JAVA)
- 12. 関数パラメータのchar文字列の値をJava文字列(JNIからJava)に渡す方法は?
- 13. 文字列の入力に数字がありません
- 14. 文字列を配列に出力するときに奇妙な文字がありますか?
- 15. ポインタの配列の入力文字列
- 16. 配列の文字列でユーザー入力を行い、文字列配列の入力を増やす
- 17. 数字を配列に入力する
- 18. 数字と文字列を文字列配列からどのように分割するのですか?
- 19. 関数のパラメータとして文字列の配列を渡すには?
- 20. char配列をパラメータとして受け取る関数
- 21. char型変数を型文字列関数に渡す関数
- 22. snprintfに空でない文字列を渡すと、関連のないchar *配列がアドレスを変更する
- 23. 入力が文字列になるまで小文字を数えます。
- 24. テンプレートパラメータへの入力としてchar配列の代わりに
- 25. 文字列とcharをブール関数に渡す際のエラー
- 26. char配列の桁数はJavaの同じ入力で異なります
- 27. C文字列(char配列):ので、スペース
- 28. ある文字列が別の文字列の部分文字列であるかどうかをチェックする関数がATSLIBにありますか?
- 29. 入力文字列配列リスト
- 30. ユーザー入力を2つの配列、ダブルと文字列にソート
char配列を 'std :: string'オブジェクトにコピーしなければならないので、それは問題はありませんが、非効率です。パラメータを変更する必要がなく、コンパイラがC++ 17をサポートしている場合は、代わりに 'std :: string_view'を使うべきです。 – zett42