2バイトにわたって、ひらがなの文字を入れたいです。 – プログラミング – Home

2バイトにわたって、ひらがなの文字を入...
 
通知
すべてクリア

[解決済] 2バイトにわたって、ひらがなの文字を入れたいです。


sd
 sd
(@sd)
ゲスト
結合: 22年前
投稿: 4
Topic starter  

Japanese[i][j+m-1]~Japanese[i][j+m-1]
の2バイトにわたって、全角ひらがなを入れたいんです。

Japanese[i][j+m-1] = 'ぱ';
とやっているんですが、
いまくいきません。

どうすれば?


引用未解決
トピックタグ
n
 n
(@n)
ゲスト
結合: 23年前
投稿: 159
 

_mbccpy()か_mbscpy()では。


返信引用
ku
 ku
(@ku)
ゲスト
結合: 25年前
投稿: 312
 

まず、代表的な方法を書いておきます
1.char szTest[3] = ぱ;
2.char szTest[3];
szTest[0] = 0x82;
szTest[1] = 0xcf;
szTest[2] = 0;
3.char szTest[3];
strcpy(szTest, ぱ);

'a'は1バイトなのですが、シングルクオーテーションの中は1バイトでないとだめです
'ぱ'は2バイトなのでだめなのです
'ab'はだめですよね?
abは大丈夫ですよね?
日本語(2バイト文字)は1文字でも2バイトあるので文字列として処理しないといけません

char cTest = 'a'
は大丈夫ですが
char cTest = 'ぱ'
はcTestのバイト数が足りないので、できません

Unicodeになったら話が変わりますが、おそらく違うのでしょう


返信引用
sd
 sd
(@sd)
ゲスト
結合: 22年前
投稿: 4
Topic starter  

皆様
さっさくのご返事ありがとうございます。

では、10バイトあるエリアに
’ぱぴぷぺぽ’
と順に入れていく場合はどうするのでしょうか?
一気に入れる場合と、2バイトずつ入れていく場合に分けてお教え
頂けると助かります。


返信引用
島
 島
(@島)
ゲスト
結合: 23年前
投稿: 238
 

>では、10バイトあるエリアに
>’ぱぴぷぺぽ’
>と順に入れていく場合はどうするのでしょうか?

残念ながら、それは出来ません。'ぱぴぷぺぽ' は文字列としては適切ではないからです
ぱぴぷぺぽ と書いてくだされば文字列だったのですが、少し違ってました。
後は、ku さんの内容の応用だと思います。どの辺が分らないのでしょうか?
文字列の最後は '\0' でなければなりませんから、10 バイトの領域に ぱぴぷぺぽ は
C や C++ やの文字列としては収まりません。少なくとも11バイト用意してください
(扱う文字コードがシフトJISの場合としてお返事しています)


返信引用
RAPT
 RAPT
(@RAPT)
ゲスト
結合: 22年前
投稿: 10
 

> Japanese[i][j+m-1]~Japanese[i][j+m-1]
Japanese[i][j+m-1]~Japanese[i][j+m]
ですよね? ま、これは置いておいて、

> では、10バイトあるエリアに
> ’ぱぴぷぺぽ’
シングルクォーテーション好きですね。SQL経験者でしょうか。
Cでは、文字列は、ダブルクォーテーションで表記します。慣れましょう。

ということで、ぱぴぷぺぽが10バイトだとしたときの例です。

TCHAR szBuff[11];
LPCTSTR lpsz = _T(ぱぴぷぺぽ);

(1) 普通にコピー
lstrcpy(szBuff, lpsz);

(2) 2バイトずつコピー
for(int i = 0; i < lstrlen(lpsz); i += 2){
lstrcpyn(szBuff + i, lpsz[i], 2);
}

Windows98/VC++6.0sp5pro/SDK-may2002/ATL3.0/WTL7.0


返信引用
sd
 sd
(@sd)
ゲスト
結合: 22年前
投稿: 4
Topic starter  

みなさん。
ご親切なご説明ありがとうございました。
やってみます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました