0

質問で問題が発生している可能性があります。コードをこのように実行するにはどうすればよいかを知ろうとしました...私の問題は何ですか。私のコードは次のとおりです。

string arr[3][4];
arr[1][0] = "34234";
printf("%s",arr[1][0]);

しかし、私の出力は %#$ (このようなもの)です。助けてください、どうもありがとう。

4

3 に答える 3

5

これは、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::vectorstd::array

于 2013-06-25T10:07:56.117 に答える
2

printfは C 関数であり、 などの型について何も知りませんstd::string。ヘッダーstd::coutからtype safe を使用できます。<iostream>

std::cout << arr[1][0];

または、本当に呼び出す必要があるprintf(そして型の安全性をあきらめる) 場合はstd::string::c_str()、 を呼び出しconst char*ますstd::stringprintfこれはわかります。

printf("%s",arr[1][0].c_str());
于 2013-06-25T10:11:25.850 に答える
1

withstd::coutの代わりに使用します。C 関数には のビューがないためです。printfstd::stringprintfstd::string

#include <iostream>
std::cout << arr[1][0];

コードを機能させるには、 std::string::c_str関数を呼び出して C char 配列を取得する必要があります

printf("%s",arr[1][0].c_str());
于 2013-06-25T10:07:42.173 に答える