エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります
コードを貼れる所
http://codepad.org/
https://ideone.com/
前スレ
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/
探検
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
レス数が1000を超えています。これ以上書き込みはできません。
2018/07/01(日) 03:44:53.53ID:4MMF8cDN
983デフォルトの名無しさん
2018/12/14(金) 01:28:14.98ID:l0obV/M9 Parser() { reg(Lit{ 1 }); } → Parser() { ::reg(Lit{ 1 }); }
コレでいける
理由は知らん
コレでいける
理由は知らん
984デフォルトの名無しさん
2018/12/14(金) 05:31:56.42ID:Op4CRLIg ありがとう
この方法で凌ぐことにします
この方法で凌ぐことにします
985デフォルトの名無しさん
2018/12/27(木) 10:14:18.41ID:aMHl4+JJ ubuntuで日本語含むファイル名を操作したいのでwoendirとかないのか探したんだけど見つからず、
wchar_tでファイル名処理した場合、いちいちmbstiwcsで変換するしかないの?
wchar_tでファイル名処理した場合、いちいちmbstiwcsで変換するしかないの?
986デフォルトの名無しさん
2018/12/27(木) 10:19:33.81ID:0qVX2+Xi 変換出来ない文字はどうすんの?
987デフォルトの名無しさん
2018/12/27(木) 10:37:38.48ID:aMHl4+JJ こっちが聞きたいんだけど
989デフォルトの名無しさん
2018/12/27(木) 12:49:46.03ID:aMHl4+JJ utf8のままどーやってopendirするのさ?
それができないから困ってるのに
DIR *dir = opendir("hogehoge");
struct dirent *dp;
dp=readdir(dir);
としたとき,dp->d_nameに入ってるファイル名ってのはcharだよね
このファイル名に手を加えようとする(renameとか)と、utf8の場合、いったんmbstowcsでwchar_tにでもコピーするとか、
wstringにでもコピーしないと文字コードと格闘する羽目になるよね。
もし、
wDIR *wdir = woprndir(L"hogehoge");
struct wdirent *wdp;
wdp = wreaaddir(wdir);
とかできればsonomama
wdp->d_nameはwcha_tなので文字の先頭バイト見て何文字なのか判断するなんて余計な操作しなくて済むと思ったわけ。
それができないから困ってるのに
DIR *dir = opendir("hogehoge");
struct dirent *dp;
dp=readdir(dir);
としたとき,dp->d_nameに入ってるファイル名ってのはcharだよね
このファイル名に手を加えようとする(renameとか)と、utf8の場合、いったんmbstowcsでwchar_tにでもコピーするとか、
wstringにでもコピーしないと文字コードと格闘する羽目になるよね。
もし、
wDIR *wdir = woprndir(L"hogehoge");
struct wdirent *wdp;
wdp = wreaaddir(wdir);
とかできればsonomama
wdp->d_nameはwcha_tなので文字の先頭バイト見て何文字なのか判断するなんて余計な操作しなくて済むと思ったわけ。
990デフォルトの名無しさん
2018/12/27(木) 13:00:04.82ID:aMHl4+JJ bashで
for i in *; do
$newname=`echo $i| myprogram`
mv $i $newname
done
で済ませてたんだけど、myprogramの方は単に文字処理だけで、
置換とか文字列削除とかややこしいところはwstringに変換してた。
bashに任せてたディレクトリオープンや、ファイル操作までC/C++でやらせようとなると、
再度wcstombsとか余計なコピーが必要になってなんだか思いっきり損してる気分になったので、
なんかほかの手がないものかと?
for i in *; do
$newname=`echo $i| myprogram`
mv $i $newname
done
で済ませてたんだけど、myprogramの方は単に文字処理だけで、
置換とか文字列削除とかややこしいところはwstringに変換してた。
bashに任せてたディレクトリオープンや、ファイル操作までC/C++でやらせようとなると、
再度wcstombsとか余計なコピーが必要になってなんだか思いっきり損してる気分になったので、
なんかほかの手がないものかと?
991デフォルトの名無しさん
2018/12/27(木) 13:49:46.07ID:SzdNjvIa >>989
utf8 を wchar_t* に入れるのはただのアホやろ
utf8 を wchar_t* に入れるのはただのアホやろ
992さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/12/27(木) 14:18:03.70ID:e6FVPdkR 次スレよろ
993デフォルトの名無しさん
2018/12/27(木) 15:25:53.05ID:X03Q+yv7 setlocale(LANG, "ja_JP.UTF-8");
setlocale(LC_CTYPE, "ja_JP.UTF-8");
char* utf8 -> mbstowcs -> wchar_t* wcs
wchar_t* wcs -> wcstombs -> char* utf8
https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/setlocale-wsetlocale?view=vs-2017
https://mgng.mugbum.info/1014
setlocale(LC_CTYPE, "ja_JP.UTF-8");
char* utf8 -> mbstowcs -> wchar_t* wcs
wchar_t* wcs -> wcstombs -> char* utf8
https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/setlocale-wsetlocale?view=vs-2017
https://mgng.mugbum.info/1014
994デフォルトの名無しさん
2018/12/27(木) 17:54:58.01ID:o7TBUkJP 無責任なこと書くけど、
Linuxならmountコマンドにオプション加えれば
ファイル名の文字コードをうまいこと透過的に変換してくれんか?
ファイルの実体に手を触れずにファイル名のコード系だけ変えたいなら、
struct dirent の d_name のバイト列をどう解釈するかの問題で、
ロケール関係ない話になりそうだし。
Linuxならmountコマンドにオプション加えれば
ファイル名の文字コードをうまいこと透過的に変換してくれんか?
ファイルの実体に手を触れずにファイル名のコード系だけ変えたいなら、
struct dirent の d_name のバイト列をどう解釈するかの問題で、
ロケール関係ない話になりそうだし。
995デフォルトの名無しさん
2018/12/27(木) 18:18:35.29ID:q3Cty4J1 プロセス側から見たらふつうそれもlocaleに従うんじゃね?
996さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/12/27(木) 23:19:26.01ID:xEoyai35 次スレ立てないとお仕置きしちゃうぜ。
997デフォルトの名無しさん
2018/12/28(金) 01:33:23.72ID:qtS4fp6w >>991
それは違うだろ
ファイル名をcharに入れてregex_replaceあたりの正規表現で再びcharに入れる場合はともかく
全角半角変換みたいに文字コードそのものをいじりたい場合はwchar_tに入れるだろ
全角文字コード -= '!'-'!'
みたいな変換しようすれば
char *pBuf = Bufとして、
*pBufの値に応じて
((*pBuf<<16) +(pBuf[1]<<8)+(pBuf[2] )&(0x00ffff
みたいなバイトの組み立てが必要になるじゃん
*pBufの文字コードに応じて
pBuf +=3だのpBuf++だのインクリメント幅の調整も要るし
いったんwcha_tに入れるのは何も間違ってないと思うが
それは違うだろ
ファイル名をcharに入れてregex_replaceあたりの正規表現で再びcharに入れる場合はともかく
全角半角変換みたいに文字コードそのものをいじりたい場合はwchar_tに入れるだろ
全角文字コード -= '!'-'!'
みたいな変換しようすれば
char *pBuf = Bufとして、
*pBufの値に応じて
((*pBuf<<16) +(pBuf[1]<<8)+(pBuf[2] )&(0x00ffff
みたいなバイトの組み立てが必要になるじゃん
*pBufの文字コードに応じて
pBuf +=3だのpBuf++だのインクリメント幅の調整も要るし
いったんwcha_tに入れるのは何も間違ってないと思うが
998デフォルトの名無しさん
2018/12/28(金) 02:13:55.81ID:qtS4fp6w シェルからファイル名をfgetwsで受け取ってるうちはwchar_tとwstringで処理してから
またシェルに出力を返せばすむけど
opendirにwchar_t版がないんで、正規表現以外の処理して、
シェルに任してた部分をC++で全部書こうとすると、
>>993のいうようにmbstowcsとwcstombsで処理を挟んでやらんとどーしよーもないと思う
またシェルに出力を返せばすむけど
opendirにwchar_t版がないんで、正規表現以外の処理して、
シェルに任してた部分をC++で全部書こうとすると、
>>993のいうようにmbstowcsとwcstombsで処理を挟んでやらんとどーしよーもないと思う
999デフォルトの名無しさん
2018/12/28(金) 05:55:59.60ID:ufThBpcD c++builder10.3 community
IID_PPV_ARGSを使わない場合どうしたら良いか教えてください
何を入れたら良いのかわからないです
#include <windows.h>
#include <tchar.h>
#include <shlobj.h>
#include <shellapi.h>
#include <commoncontrols.h>
void __fastcall TForm1::Button1Click(TObject *Sender) {
IImageList *piml;
SHGetImageList(SHIL_JUMBO, IID_IImageList, (void**)&piml);// pimlがNULLになる
SHGetImageList(SHIL_JUMBO, IID_PPV_ARGS(&piml));// 成功
}
IID_PPV_ARGSを使わない場合どうしたら良いか教えてください
何を入れたら良いのかわからないです
#include <windows.h>
#include <tchar.h>
#include <shlobj.h>
#include <shellapi.h>
#include <commoncontrols.h>
void __fastcall TForm1::Button1Click(TObject *Sender) {
IImageList *piml;
SHGetImageList(SHIL_JUMBO, IID_IImageList, (void**)&piml);// pimlがNULLになる
SHGetImageList(SHIL_JUMBO, IID_PPV_ARGS(&piml));// 成功
}
1000デフォルトの名無しさん
2018/12/28(金) 06:05:18.93ID:ufThBpcD 【初心者歓迎】C/C++室 Ver.104【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1545944692/
https://mevius.5ch.net/test/read.cgi/tech/1545944692/
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 180日 2時間 20分 26秒
新しいスレッドを立ててください。
life time: 180日 2時間 20分 26秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ [冬月記者★]
- 自民・麻生太郎副総裁 石破政権の1年は「どよーん」 高市政権発足で「何となく明るくなった」「世の中のことが決まり動いている」★2 [Hitzeschleier★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- 【山形】クマ駆除で誤射した猟友会隊員に町が1663万円請求へ...弾当たり男性大けが2023年 小国町 [nita★]
- 【27歳会社員】「自慰行為に使うために」コインランドリーの乾燥機から24歳女性の下着など計11点(時価8万2080円相当)盗んだ疑い [nita★]
