質問で問題が発生している可能性があります。コードをこのように実行するにはどうすればよいかを知ろうとしました...私の問題は何ですか。私のコードは次のとおりです。
string arr[3][4];
arr[1][0] = "34234";
printf("%s",arr[1][0]);
しかし、私の出力は %#$ (このようなもの)です。助けてください、どうもありがとう。
これは、printf
関数が C++std::string
クラスについて何も知らないためです。C標準ライブラリの一部であるため、そこにあります。
たとえば、使用できる C スタイルの文字列を取得するには、次のメソッドprintf
を使用する必要があります。c_str
printf("%s", arr[1][0].c_str());
しかし、実際にすべきことは、ネイティブ C++ ストリーム出力の使用方法を学ぶことです。
std::cout << arr[1][0];
PS。古い C スタイルの配列の代わりに、やなどの C++標準コンテナも調べる必要があります。std::vector
std::array
printf
は C 関数であり、 などの型について何も知りませんstd::string
。ヘッダーstd::cout
からtype safe を使用できます。<iostream>
std::cout << arr[1][0];
または、本当に呼び出す必要があるprintf
(そして型の安全性をあきらめる) 場合はstd::string::c_str()
、 を呼び出しconst char*
ますstd::string
。printf
これはわかります。
printf("%s",arr[1][0].c_str());
withstd::cout
の代わりに使用します。C 関数には のビューがないためです。printf
std::string
printf
std::string
#include <iostream>
std::cout << arr[1][0];
コードを機能させるには、 std::string::c_str関数を呼び出して C char 配列を取得する必要があります
printf("%s",arr[1][0].c_str());