探検
C++相談室 part166
737デフォルトの名無しさん (ワッチョイ 1f01-/Hnv)
2025/11/13(木) 23:07:46.30ID:/tchf03X0 もしくはunique_ptrをunique_refでラップしてしまうのが楽か
738デフォルトの名無しさん (ワッチョイ 1f01-/Hnv)
2025/11/13(木) 23:10:58.33ID:/tchf03X0739デフォルトの名無しさん (ワッチョイ 9f7c-18cq)
2025/11/13(木) 23:14:39.55ID:qvmNyT2p0740はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9f32-jcp5)
2025/11/13(木) 23:20:38.76ID:bJCWdXAy0 >>732
UB になる。
ポインタと違って参照自体は無効を表現できないのが C++ の基本ルールであり、 reference_wrapper でもそれは同じ。
それでもあえてやるなら適当にダミーのオブジェクトを作っておいてそれを参照していたら無効ということにするというようなことをできなくはないが……それはそれでちょっと不恰好だよね。
UB になる。
ポインタと違って参照自体は無効を表現できないのが C++ の基本ルールであり、 reference_wrapper でもそれは同じ。
それでもあえてやるなら適当にダミーのオブジェクトを作っておいてそれを参照していたら無効ということにするというようなことをできなくはないが……それはそれでちょっと不恰好だよね。
741デフォルトの名無しさん (ワッチョイ 1f01-/Hnv)
2025/11/13(木) 23:22:41.52ID:/tchf03X0742デフォルトの名無しさん (ワッチョイ 9f7c-18cq)
2025/11/13(木) 23:30:06.73ID:qvmNyT2p0 >>741
ハンドルは外部で持ったままで、その関数内クラスにはハンドルの参照を渡す(関数内クラスの参照メンバを外部のハンドルで初期化する)って言ってる?それ委譲とは言わないよ
委譲したからにはそのリソースはその関数内クラスの消滅とともに消えないといけないけど、そうなったら外部で持ってたハンドルの実体はどうなるの?
どんなケースを想定してるのか全然わかんない
ハンドルは外部で持ったままで、その関数内クラスにはハンドルの参照を渡す(関数内クラスの参照メンバを外部のハンドルで初期化する)って言ってる?それ委譲とは言わないよ
委譲したからにはそのリソースはその関数内クラスの消滅とともに消えないといけないけど、そうなったら外部で持ってたハンドルの実体はどうなるの?
どんなケースを想定してるのか全然わかんない
743デフォルトの名無しさん (ブーイモ MM0f-lDbn)
2025/11/14(金) 12:19:28.56ID:YW3kWFexM >>740
までもnull objectはよく使ってるからそれにするわ
個人的にはすっきり
でもc++の参照っていらん子やん?って気がしてならない
class A {
static constexpr std::string s_empty_str{""};
std::reference_wrapper<const std::string> m_s;
public:
A(const std::string& s) : m_s(s) {}
A(A&& rhs) : m_s(std::exchange(rhs.m_s, s_empty_str)) { }
};
までもnull objectはよく使ってるからそれにするわ
個人的にはすっきり
でもc++の参照っていらん子やん?って気がしてならない
class A {
static constexpr std::string s_empty_str{""};
std::reference_wrapper<const std::string> m_s;
public:
A(const std::string& s) : m_s(s) {}
A(A&& rhs) : m_s(std::exchange(rhs.m_s, s_empty_str)) { }
};
744デフォルトの名無しさん (ワッチョイ ff36-TpjX)
2025/11/14(金) 17:06:33.25ID:sw2A38eb0 >>743
型無しのnullpointerが型システム(機能保証)を破壊しているから、型を強要する参照は必要。
型無しのnullpointerが型システム(機能保証)を破壊しているから、型を強要する参照は必要。
745デフォルトの名無しさん (ブーイモ MM0f-lDbn)
2025/11/14(金) 17:48:56.23ID:d/VpWy+aM746はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9f32-jcp5)
2025/11/14(金) 19:18:46.50ID:YeCIJNF30 >>743
参照は色々な場面で有用ではあるが、 D&E によれば最初の動機は演算子オーバーロードだと書かれている。
オブジェクトをコピーする必要がない (値をコピーせずに場所を渡せば充分) ような状況で参照がなくポインタを使うならいちいち &a+&b みたいにして書く必要が生じる。
いかにも煩わしいだろう。
参照は色々な場面で有用ではあるが、 D&E によれば最初の動機は演算子オーバーロードだと書かれている。
オブジェクトをコピーする必要がない (値をコピーせずに場所を渡せば充分) ような状況で参照がなくポインタを使うならいちいち &a+&b みたいにして書く必要が生じる。
いかにも煩わしいだろう。
747デフォルトの名無しさん (ワッチョイ 1fa6-0yYo)
2025/11/14(金) 19:55:59.90ID:p/1JbX4j0 C++より古いの新しいの含めて多くの言語が採用してるように参照は引数でのみ使用可能で良かったと思うよ
748デフォルトの名無しさん (ワッチョイ 9fda-V2U1)
2025/11/14(金) 20:35:30.63ID:/xnnTPah0749デフォルトの名無しさん (ワッチョイ 1f42-q6Sd)
2025/11/15(土) 10:22:10.37ID:ncudN0/g0 747は、(実際の仕様はそうなっていないけど)引数でのみ使用可能なら良かったのに……という意味だと思うぞ。
750デフォルトの名無しさん (ワッチョイ 9fda-V2U1)
2025/11/15(土) 19:11:12.30ID:lfrbAWbT0 ああ
>使用可能で良かったと思うよ
ではなく、
>使用可能だったら良かったのにと思うよ
って事ですか
>使用可能で良かったと思うよ
ではなく、
>使用可能だったら良かったのにと思うよ
って事ですか
751デフォルトの名無しさん (ワッチョイ ffa1-lDbn)
2025/11/15(土) 19:25:57.81ID:3JdS/6Ib0 カスみたいな読解力
752デフォルトの名無しさん (オッペケ Srf3-rRus)
2025/11/15(土) 19:35:13.09ID:QqRirP4Fr そんなコミュ力高かったら、石が友達なんて言わない
753デフォルトの名無しさん (ワッチョイ 1f42-q6Sd)
2025/11/15(土) 19:39:44.33ID:ncudN0/g0 分かりやすいように749みたいに書いたけど、747で普通に意味が通じるので、「ではなく」というとちょっと違う気がするかな。言葉って難しい。
754デフォルトの名無しさん (ワッチョイ 4d7c-2tyn)
2025/11/16(日) 01:00:07.67ID:oagsDxeg0 こういう人が仕様書読んで実装すると思うとこわい
755デフォルトの名無しさん (アウアウウー Sa85-H7iN)
2025/11/16(日) 13:18:16.47ID:0LN83zrSa756デフォルトの名無しさん (ワッチョイ 7901-djhR)
2025/11/16(日) 13:32:50.84ID:Xh/GBEYv0 C++ばっかりやっとるからだよ
日本語を使え
日本語を使え
757デフォルトの名無しさん (ワッチョイ 0dda-43h0)
2025/11/16(日) 16:38:31.73ID:r6khXsKc0758デフォルトの名無しさん (ワッチョイ 22f2-43h0)
2025/11/16(日) 16:49:19.65ID:D8AV/AUw0 あんたは機能的非識字なんでしょ
歳とか関係ないって
歳とか関係ないって
759デフォルトの名無しさん (ワッチョイ 91df-iLwu)
2025/11/16(日) 18:20:15.84ID:fnmgx6dT0 747は、日本語の文法としておかしなところは別にないけれども、748のような読み方も許すという点で多義的な文にはなっているかな。
「C++より〜ように」という前半の文脈があるので748のような受け取り方はしない方が普通だと思うが、文法的には748のような読み方も一応可能だろう。
「使用可能(ということ)で良かった」としたら、完全に一義的になっているとまでは言えないまでも、多少ニュアンスは明確になっているかな。そうでもないか。
「C++より〜ように」という前半の文脈があるので748のような受け取り方はしない方が普通だと思うが、文法的には748のような読み方も一応可能だろう。
「使用可能(ということ)で良かった」としたら、完全に一義的になっているとまでは言えないまでも、多少ニュアンスは明確になっているかな。そうでもないか。
760デフォルトの名無しさん (ワッチョイ 11da-ZOUt)
2025/11/16(日) 19:06:28.66ID:B8gkzotY0 >>757
文字なんでニュアンスが伝わりづらいだけだよ
「この前の件だけど、両方出来るようになったよ」
「他と同じように片方のみで良かったと思うよ」
まあ誤解を与えない書き方とすると
「他と同じように片方のみで良かったのにと思うよ」
って感じで「のに」をいれた方が残念がっている様子が伝わってくるよね
文字なんでニュアンスが伝わりづらいだけだよ
「この前の件だけど、両方出来るようになったよ」
「他と同じように片方のみで良かったと思うよ」
まあ誤解を与えない書き方とすると
「他と同じように片方のみで良かったのにと思うよ」
って感じで「のに」をいれた方が残念がっている様子が伝わってくるよね
761デフォルトの名無しさん (ワッチョイ e9f6-iLwu)
2025/11/17(月) 09:06:44.31ID:g7E0m0EQ0 C++はよく分からないので、cpprefjpにはいつもお世話になっているんだけど、生文字列リテラルのところにある「改行が入力された場合、改行の制御文字 '\n' に変換される」というのは説明として正確なのかな。
raw文字列リテラルのところの規格にはそれっぽいことは書いていないように思うし、改行文字は通常の文字としてそのままraw文字列リテラルに含められるだけであって、別に「変換」とかはされていないんじゃないかと思うんだけど。
raw文字列リテラルのところの規格にはそれっぽいことは書いていないように思うし、改行文字は通常の文字としてそのままraw文字列リテラルに含められるだけであって、別に「変換」とかはされていないんじゃないかと思うんだけど。
762はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4d32-o1Ob)
2025/11/17(月) 10:18:46.23ID:DdlSQj440 >>761
'\n' に変換するという説明は誤りだと私も思う。
規格内の例中では \n と同等というような説明はあるのでこれを変換と誤解したのかも?
https://timsong-cpp.github.io/cppwp/n4950/lex.string#5
'\n' に変換するという説明は誤りだと私も思う。
規格内の例中では \n と同等というような説明はあるのでこれを変換と誤解したのかも?
https://timsong-cpp.github.io/cppwp/n4950/lex.string#5
763はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4d32-o1Ob)
2025/11/17(月) 10:27:40.74ID:DdlSQj440 余談だけど生文字列リテラルの扱いにはちょっと変な特別扱いがある。
C++ では処理の初期段階で行を連結 (改行を削除) してしまうことになっていて、その時点では各改行が生文字列リテラルの中なのかどうか認識してない。
https://timsong-cpp.github.io/cppwp/n4950/lex#phases-1.2
後でトークンを分割するときになって生文字列リテラルを認識したらその範囲では連結を「取り消す」という処理が入る。
https://timsong-cpp.github.io/cppwp/n4950/lex#pptoken-3.1
結果としては改行はそのまま含まれるだけなんだけど、理屈としては色々な操作 (変換?) はされてる。
ただ、これは C++ の言語の解釈の話であって処理系の実装方法ではない。
つまり結果が同じであれば実装方法は問わないので連結してから取り消すのではなく連結の例外にしてもかまわないし、
生文字列リテラルを普通の文字列リテラルに変換するような手法もあるのかもしれない。
C++ では処理の初期段階で行を連結 (改行を削除) してしまうことになっていて、その時点では各改行が生文字列リテラルの中なのかどうか認識してない。
https://timsong-cpp.github.io/cppwp/n4950/lex#phases-1.2
後でトークンを分割するときになって生文字列リテラルを認識したらその範囲では連結を「取り消す」という処理が入る。
https://timsong-cpp.github.io/cppwp/n4950/lex#pptoken-3.1
結果としては改行はそのまま含まれるだけなんだけど、理屈としては色々な操作 (変換?) はされてる。
ただ、これは C++ の言語の解釈の話であって処理系の実装方法ではない。
つまり結果が同じであれば実装方法は問わないので連結してから取り消すのではなく連結の例外にしてもかまわないし、
生文字列リテラルを普通の文字列リテラルに変換するような手法もあるのかもしれない。
764デフォルトの名無しさん (ワッチョイ e9a6-Bso2)
2025/11/17(月) 20:16:57.16ID:3c799E+W0765デフォルトの名無しさん (ワッチョイ 6e10-iLwu)
2025/11/18(火) 02:43:23.41ID:oTdu6LNz0766デフォルトの名無しさん (ワッチョイ 4d7c-2tyn)
2025/11/18(火) 07:15:20.89ID:cPKOUaFd0 規格が決めてるのはソース中の論理的な「改行」の振る舞いであって、そのバイト表現は知ったこっちゃないって奴じゃないの
知らんけど
知らんけど
767はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4d32-o1Ob)
2025/11/18(火) 10:05:52.54ID:BySuHnsX0 >>766
従来はそうだったはずだけど C++23 からは Unicode (UTF-8) のコードポイントの並びで規定されていて、 CRLF が単一の改行に置き換えられる規則が明記されてる。
ただ、 Unicode 系以外の文字コードから処理系定義の規則で Unicode に適当にマッピングするようなのも認めているので実態はあまり変わらない。
従来はそうだったはずだけど C++23 からは Unicode (UTF-8) のコードポイントの並びで規定されていて、 CRLF が単一の改行に置き換えられる規則が明記されてる。
ただ、 Unicode 系以外の文字コードから処理系定義の規則で Unicode に適当にマッピングするようなのも認めているので実態はあまり変わらない。
768デフォルトの名無しさん (アウアウウー Sa85-H7iN)
2025/11/18(火) 23:53:18.65ID:+AochNn2a >>764-765
termcapだかterminfoだかでゴニョゴニョ
termcapだかterminfoだかでゴニョゴニョ
769デフォルトの名無しさん (ブーイモ MM22-hp//)
2025/11/19(水) 15:04:12.19ID:HRoC/CWNM >>768
関係ない
関係ない
770デフォルトの名無しさん (ワッチョイ ffa1-txSl)
2025/12/13(土) 08:54:58.15ID:WPESu7ut0 LF <--> CR LF 変換はI/Oの段階で行われるものだという印象
証拠に、"\r\n" をテキストモードでファイルに書くと "\r\r\n" になり、
それをテキストモードで読むと "\r\n" に戻るのは万国共通のふるまいのはず(適当
(バイナリモードだともちろん文字列リテラルとファイルのデータ両方 "\r\n"。
すなわちC/C++言語における文字列リテラルの改行は古来より "\n" の1文字……
なので
>従来はそうだったはずだけど C++23 からは Unicode (UTF-8) のコードポイントの並びで規定されていて、 CRLF が単一の改行に置き換えられる規則が明記されてる。
こそ
>(ソースコード上の生文字リテラル内での行の折り返しを)「改行が入力された場合、改行の制御文字 '\n' に変換される」
ことの根拠になっているのでは……
で、
>Unicode 系以外の文字コードから処理系定義の規則で Unicode に適当にマッピングするようなのも認めているので
というのは "\r\n" <--> "\n" の変換(文字数が違う)を正当化しないと思う
証拠に、"\r\n" をテキストモードでファイルに書くと "\r\r\n" になり、
それをテキストモードで読むと "\r\n" に戻るのは万国共通のふるまいのはず(適当
(バイナリモードだともちろん文字列リテラルとファイルのデータ両方 "\r\n"。
すなわちC/C++言語における文字列リテラルの改行は古来より "\n" の1文字……
なので
>従来はそうだったはずだけど C++23 からは Unicode (UTF-8) のコードポイントの並びで規定されていて、 CRLF が単一の改行に置き換えられる規則が明記されてる。
こそ
>(ソースコード上の生文字リテラル内での行の折り返しを)「改行が入力された場合、改行の制御文字 '\n' に変換される」
ことの根拠になっているのでは……
で、
>Unicode 系以外の文字コードから処理系定義の規則で Unicode に適当にマッピングするようなのも認めているので
というのは "\r\n" <--> "\n" の変換(文字数が違う)を正当化しないと思う
771デフォルトの名無しさん (ワッチョイ ffa1-txSl)
2025/12/13(土) 09:19:18.23ID:WPESu7ut0 >>763
のは次のような特殊なケースでのみ問題になるだけなのではないかという希ガス
#define TEXT_DEFINITION R"(begin\
a,\
b,\
c\
end)"
std::string text = TEXT_DEFINITION; // textの内容が "(begin\na\nb\nc\nend)" になることを気体
初期段階、と書かれるとようわからんが、行を結合するのはプリプロセッサが行うだけのはず……
C/C++は文脈自由言語でありかつ改行文字はトークンでないから、パーサー部分が行を結合する必然性が無い
のは次のような特殊なケースでのみ問題になるだけなのではないかという希ガス
#define TEXT_DEFINITION R"(begin\
a,\
b,\
c\
end)"
std::string text = TEXT_DEFINITION; // textの内容が "(begin\na\nb\nc\nend)" になることを気体
初期段階、と書かれるとようわからんが、行を結合するのはプリプロセッサが行うだけのはず……
C/C++は文脈自由言語でありかつ改行文字はトークンでないから、パーサー部分が行を結合する必然性が無い
772デフォルトの名無しさん (ワッチョイ 7746-RIfS)
2025/12/13(土) 10:11:52.86ID:c4oXW2530 プラットフォームごとの改行コードに合わせた変換がI/Oの段階で行われるのはそうだろうけど(たとえばPythonは変換仕様の細かい指定がprint関数でできるし、他の言語でも同様の機能があることが多いのではないかと思う。なので、\r\nと\r\r\nの変換が万国共通ということは別にないはず)、規格で規定されているのはソースコードをコンパイルする前処理としての改行コードの正規化(?)の話であって、別の話なのではないかと思うが。
773デフォルトの名無しさん (ワッチョイ ffa1-txSl)
2025/12/13(土) 10:26:05.41ID:WPESu7ut0 >>772
>\r\nと\r\r\nの変換が万国共通ということは別にないはず
>>770 の前段のは、
C/C++のバイナリモードとテキストモードのI/Oの挙動がC/C++言語の文字列リテラル内の改行が "\n" 一文字であることを含意しているという主旨、
なので、あくまでC/C++のI/Oの挙動において\r\nと\r\r\nの変換が万国共通ならおk、
>ソースコードをコンパイルする前処理としての改行コードの正規化(?)の話
Windowsのメモ帳で
R"(begin
a)"
と書いたらソースファイル上は beginとaの間に CR LF が入るが文字列リテラルの期待値は "begin\na" ですよ(CR LF → LF 1文字に変換)、という話のはず……
>\r\nと\r\r\nの変換が万国共通ということは別にないはず
>>770 の前段のは、
C/C++のバイナリモードとテキストモードのI/Oの挙動がC/C++言語の文字列リテラル内の改行が "\n" 一文字であることを含意しているという主旨、
なので、あくまでC/C++のI/Oの挙動において\r\nと\r\r\nの変換が万国共通ならおk、
>ソースコードをコンパイルする前処理としての改行コードの正規化(?)の話
Windowsのメモ帳で
R"(begin
a)"
と書いたらソースファイル上は beginとaの間に CR LF が入るが文字列リテラルの期待値は "begin\na" ですよ(CR LF → LF 1文字に変換)、という話のはず……
774デフォルトの名無しさん (ワッチョイ 9756-RIfS)
2025/12/13(土) 10:53:09.54ID:+GybsC590 ①エスケープシーケンス \n と ②そのデコード結果であるLF、③実際の改行コード(プラットフォームにより、LF、CRLF、CRのいずれか)の区別を意識的にしないと議論が混乱すると思う。
cpprefjpの>>761 の説明に違和感があるのは、raw文字列リテラル内ではエスケープシーケンスのデコード処理はされないのに、エスケープシーケンス \n で説明している点にもあると思う。773も同様に①と②を同義語として使っているように見えるが、そこは本来は区別すべきではないか。
cpprefjpの>>761 の説明に違和感があるのは、raw文字列リテラル内ではエスケープシーケンスのデコード処理はされないのに、エスケープシーケンス \n で説明している点にもあると思う。773も同様に①と②を同義語として使っているように見えるが、そこは本来は区別すべきではないか。
775デフォルトの名無しさん (ワッチョイ 9756-RIfS)
2025/12/13(土) 10:59:50.95ID:+GybsC590 >>773の最後の例でいえば、raw文字列リテラルの仕様として、改行コードがLF(エスケープシーケンス \n ではない)に変換されるという記述は特にないと思う。
776デフォルトの名無しさん (ワッチョイ 9756-RIfS)
2025/12/13(土) 11:05:17.48ID:+GybsC590 実際には、最初にソースコード上の改行コードが一律にLFに変換され、トークン分割の段階でraw文字列リテラル中の改行コードと判明した場合には(>>763)、それに応じた処理をするんだろうが、LFからさらに変換したりはしないというのはありそうなことではある。
だけど、それは改行コードの正規化(?)に付随してそういう処理になっていることが多いというだけのことであって、raw文字列リテラルの仕様の一部としてそうすべきと規定されているわけではないよねってことだと思うんだが。
だけど、それは改行コードの正規化(?)に付随してそういう処理になっていることが多いというだけのことであって、raw文字列リテラルの仕様の一部としてそうすべきと規定されているわけではないよねってことだと思うんだが。
777デフォルトの名無しさん (ワッチョイ 9756-RIfS)
2025/12/13(土) 11:07:53.08ID:+GybsC590 NGワード規制回避のため分割レスになって申し訳ない。何がNGワードだったんどろう……、
778デフォルトの名無しさん (ワッチョイ ffa1-txSl)
2025/12/13(土) 18:42:47.60ID:WPESu7ut0 >>775
↓これがどのプラットフォームのエディタで書いてビルドしてもequality 1 2がtrueになるのなら
ソースコードの改行(CR LF or LF)が「"\n" に変換されている」としか言いようがないような……
std::string text1 = R"(begin
a,
b,
c
end)"; // "\n" を含まない文字列定義
std::string text2 = "begin\na,\nb,\nc\nend"; // "\n" を含む文字列定義
std::cout << std::boolalpha << "equality 1 2: " << (text1 == text2) << std::endl;
んまー説明のための新しい改行表現を定義したいなら止めはしませぬが……
↓これがどのプラットフォームのエディタで書いてビルドしてもequality 1 2がtrueになるのなら
ソースコードの改行(CR LF or LF)が「"\n" に変換されている」としか言いようがないような……
std::string text1 = R"(begin
a,
b,
c
end)"; // "\n" を含まない文字列定義
std::string text2 = "begin\na,\nb,\nc\nend"; // "\n" を含む文字列定義
std::cout << std::boolalpha << "equality 1 2: " << (text1 == text2) << std::endl;
んまー説明のための新しい改行表現を定義したいなら止めはしませぬが……
779デフォルトの名無しさん (ワッチョイ ffa1-txSl)
2025/12/13(土) 18:53:55.47ID:WPESu7ut0 それはそうとしてRAW文字列とプリプロセッサとの関係で試したら(漏れにとって)奇怪なことがわかりた……
↓次のコードがビルドが通ってequality 2 5 がtrueになる……
// プリプロセッサを通す場合(3)
// マクロ定義が複数行に渡る場合、本来は \\ で行継続せねばならないが、RAW stringの行継続は特別視
#define TEXT_DEFINITION R"(begin
a,
b,
c
end)"
std::string text5 = TEXT_DEFINITION;
std::cout << text5 << std::endl;
std::cout << std::boolalpha << "equality 2 5: " << (text2 == text5) << std::endl;
これはさすがにプリプロセスの段階でプリプロセッサが R"(...)" を認識しないとできない芸当……
(プリプロセッサの普通の挙動ならTEXT_DEFINITION の定義内容は R"(begin(ここで日記は終わってゐる
にならねばおかしいはず
ソ〜ス: https://ideone.com/AJcmZT
↓次のコードがビルドが通ってequality 2 5 がtrueになる……
// プリプロセッサを通す場合(3)
// マクロ定義が複数行に渡る場合、本来は \\ で行継続せねばならないが、RAW stringの行継続は特別視
#define TEXT_DEFINITION R"(begin
a,
b,
c
end)"
std::string text5 = TEXT_DEFINITION;
std::cout << text5 << std::endl;
std::cout << std::boolalpha << "equality 2 5: " << (text2 == text5) << std::endl;
これはさすがにプリプロセスの段階でプリプロセッサが R"(...)" を認識しないとできない芸当……
(プリプロセッサの普通の挙動ならTEXT_DEFINITION の定義内容は R"(begin(ここで日記は終わってゐる
にならねばおかしいはず
ソ〜ス: https://ideone.com/AJcmZT
780デフォルトの名無しさん (ワッチョイ 9f79-+7gk)
2025/12/13(土) 21:05:36.09ID:jWXCFmDk0 実行ファイルの内部でどういうコードが埋め込まれるとか興味ないのかな
>>777は自分の書き込みと他を比較したりしないのかな
>>777は自分の書き込みと他を比較したりしないのかな
781デフォルトの名無しさん (ワッチョイ 1f51-kDYN)
2025/12/14(日) 14:42:29.18ID:71RgSOjf0 VSでC++をやっている。ファイルのバイナリのランダムアクセスをしているんだけど、ファイルの長さを短くしたくて、
ftruncateとか試すんだけど、なさそう。VSでファイルの長さ変更ってどうしたらいい?
ftruncateとか試すんだけど、なさそう。VSでファイルの長さ変更ってどうしたらいい?
782はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e332-f85/)
2025/12/14(日) 14:48:40.58ID:SWyrOIpz0 >>781
Windows には SetEndOfFile という API がある。
現在位置をファイル終端ということにするという機能なので事前に SetFilePointer で必要な位置に移動してから SetEndOfFile を使えば良い。
Windows には SetEndOfFile という API がある。
現在位置をファイル終端ということにするという機能なので事前に SetFilePointer で必要な位置に移動してから SetEndOfFile を使えば良い。
783デフォルトの名無しさん (ワッチョイ 1f51-kDYN)
2025/12/14(日) 15:51:40.12ID:71RgSOjf0 >>782
とりあえずビルドは成功した。ありがと
とりあえずビルドは成功した。ありがと
レスを投稿する
ニュース
- 伊東市長選、田久保氏の落選確実 元市議の杉本氏と元市長の小野氏が激しく競り合う [蚤の市★]
- こども家庭庁、2026年から“独身税”を開始、年収200万なら年4200円、年収400万なら年7800円 ★5 [お断り★]
- サナエノミクスについて力説 積極的な財政出動で「所得増える 消費マインド上がる 税収増える」片山さつき財務大臣 ★2 [少考さん★]
- B’z東京ドーム公演で後ろの客が大熱唱…「B’zの歌声に集中できない」注意すると笑いながら反論されモヤモヤ [muffin★]
- 中国軍機のレーダー照射1週間 駆け引き続く 中国、米のレッドライン模索 日本、米以外の同志国とも連携探る 米は対立から距離置く [ぐれ★]
- 【速報】宮川大輔&ケンコバの福岡ライブ 開演1時間前に急きょ中止「諸般の都合により」 [jinjin★]
- 【実況】博衣こよりのえちえちボンバーマン大会🧪★3
- 【速報】伊東市長選、田久保氏が敗北確実wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww [812874503]
- なんGで毎日のように立ってる→🏡これなんなん❓
- このお靴欲しい
- 人気漫画家、絶望「どれだけガンダムが反戦を訴えてもゴジラやジブリがメッセージ出しても届かない、もうどうしたらいいの…?」 [339712612]
- モモ・​デビルーク(ToLOVEる)がバニーガール姿でプライズ・フィギュア化キタ━━━━(゚∀゚)━━━━!! [387442934]
