指定した位置から文字を切り取りたいです。
PHPで以前プログラムを書いていた時にsubstr関数という便利なものがあったのですが
そのような関数はC++かWindowsAPIで用意されていないでしょうか?
char strTest_1[128] = "あいうえお";
char strTest_2[128] = 関数名(str_Test[/url],2,2);
↑2文字目から2文字切り取るみたいな
これで出力すると「うえ」ないのでしたら
これに似た関数を作りたいのですがどうすればよろしいのでしょうか・・・・?
文字の切り取り
Re:文字の切り取り
std::stringには、そのような機能がありますよ。
http://www.geocities.jp/ky_webid/cpp/library/001.html
(こちらのサイトなどをご覧になってみてください。)
具体的には、std::string::substr()という関数を使用します。
http://www.geocities.jp/ky_webid/cpp/library/001.html
(こちらのサイトなどをご覧になってみてください。)
具体的には、std::string::substr()という関数を使用します。
Re:文字の切り取り
Cにもあるのですねw
表示はどのようにすればよいのでしょうか?
using namespace std; string str( "あいうえお" ); str.substr(2,1);これをDrawTextやTextOutなどに渡したら型が違うとエラーが出てしまいました。
表示はどのようにすればよいのでしょうか?
Re:文字の切り取り
using namespace std; string str( "あいうえお" ); str.substr(2,1); str = str.c_str(); TextOut(hMemDC, 100, 100, str, strlen(str));これでかいてみたのですが変換できないです・・・。
std::string を char* にではなく
char* を std::string に変換ではないでしょうか?
Re:文字の切り取り
(WinAPIの仕様経験は皆無に等しいので、検討はずれなことをいっているかもしれませんが)
TextOut関数が文字列の引数として取る型はLPCTSTRですよね。
非ユニコード環境で開発されているようですので、
LPCTSTR は const char* と同等です。
なので、std::string を const char* に変換する必要があります。
std::string のメンバ関数である c_str は、const char* として文字列を返します。
よって、
TextOut(hMemDC, 100, 100, str.c_str(), str.length());
で実行できるはずです。
(length関数は文字列の長さを返します。)
TextOut関数が文字列の引数として取る型はLPCTSTRですよね。
非ユニコード環境で開発されているようですので、
LPCTSTR は const char* と同等です。
なので、std::string を const char* に変換する必要があります。
std::string のメンバ関数である c_str は、const char* として文字列を返します。
よって、
TextOut(hMemDC, 100, 100, str.c_str(), str.length());
で実行できるはずです。
(length関数は文字列の長さを返します。)
Re:文字の切り取り
MNS様
表示できました~
ありがとうございます。
2バイト文字なので注意が必要みたいですねw
たかぎ様
strncpyでもやってみてできました。
皆様ありがとうございました。
表示できました~
ありがとうございます。
2バイト文字なので注意が必要みたいですねw
たかぎ様
strncpyでもやってみてできました。
皆様ありがとうございました。