C 文字列操作 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(文字列長取得)
(文字列長取得)
72行: 72行:
 
StrCount=22
 
StrCount=22
 
</syntaxhighlight>
 
</syntaxhighlight>
_mbslenは文字列長探索をしたい文字列変数の引数が、unsigned char型ですので、<br />
+
_mb系の関数を利用するには、<br />
 +
#include <mbstring.h>をインクルードする必要があります。<br />
 +
<br />
 +
更に_mbslenは文字列長探索をしたい文字列変数の引数が、unsigned char型ですので、<br />
 
wchar_t型、char型の引数では文字列長を探索することは出来ません。あえて実施するならば、<br />
 
wchar_t型、char型の引数では文字列長を探索することは出来ません。あえて実施するならば、<br />
 
reinterpret_cast<unsigned char*>(※charポインタ型※)と強制的なキャストを実施することで、動作させることができます。<br />
 
reinterpret_cast<unsigned char*>(※charポインタ型※)と強制的なキャストを実施することで、動作させることができます。<br />
80行: 83行:
 
<syntaxhighlight lang="cpp" line start="1">
 
<syntaxhighlight lang="cpp" line start="1">
 
#include <tchar.h>
 
#include <tchar.h>
 +
#include <mbstring.h>
 
int main() {
 
int main() {
 
_tsetlocale(LC_ALL, _T("Japanese"));
 
_tsetlocale(LC_ALL, _T("Japanese"));
88行: 92行:
 
ppcStr1[i] = new char[strlen(cStr1[i]) + 1];//まずは単純に文字列をコピーするための領域を確保。
 
ppcStr1[i] = new char[strlen(cStr1[i]) + 1];//まずは単純に文字列をコピーするための領域を確保。
 
 
strcpy_s(ppcStr1[i], strlen(cStr1[i]) + 1,cStr1[i]);
+
strcpy_s(ppcStr1[i], strlen(cStr1[i]) + 1,cStr1[i]);//コピー
  
 
}
 
}
 
for(int i = 0; i < (sizeof(cStr1)/sizeof(*cStr1)); i++){
 
for(int i = 0; i < (sizeof(cStr1)/sizeof(*cStr1)); i++){
 +
//強制キャストでunsigned char*型に変換して文字列長を探索。
 
printf("%2d/%2d:cStr1[%2d]=%s\nStrCount=%d\n\n",i, sizeof(cStr1)/sizeof(*cStr1),i, ppcStr1[i],_mbslen(reinterpret_cast<unsigned char*>(ppcStr1[i])));
 
printf("%2d/%2d:cStr1[%2d]=%s\nStrCount=%d\n\n",i, sizeof(cStr1)/sizeof(*cStr1),i, ppcStr1[i],_mbslen(reinterpret_cast<unsigned char*>(ppcStr1[i])));
 
}
 
}
116行: 121行:
 
<syntaxhighlight lang="cpp" line start="1">
 
<syntaxhighlight lang="cpp" line start="1">
 
#include <tchar.h>
 
#include <tchar.h>
 +
#include <mbstring.h>
 
int main() {
 
int main() {
 
_tsetlocale(LC_ALL, _T("Japanese"));
 
_tsetlocale(LC_ALL, _T("Japanese"));
142行: 148行:
  
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
といった具合にいろいろな関数があるので、一つづつ掘り下げて理解しておくのも、必要です。<br />
 +
こういう違いがあるということを把握していれば、臨機応変に対応しやすくなるかもです。<br />
 +
自分は分かったつもりにならずに、常に謙虚に確かめてみる姿勢ってのは、必要なんじゃないかと思います。<br />
 +
そして常に、自分が実施するであろうパターンを網羅して確かめる。だから、あえて文字列の配列の場合に<br />
 +
どうやればいいのかを探ります。
 +
 
*コピー
 
*コピー
 
*連結
 
*連結

2013年11月30日 (土) 00:00時点における版



個人用ツール
名前空間

変種
操作
案内
ツールボックス