vectorの上限 – プログラミング – Home

通知
すべてクリア

[解決済] vectorの上限


U
 U
(@U)
ゲスト
結合: 21年前
投稿: 6
Topic starter  

はじめまして。

テキストエディタを自作で作っています。

文字列分のメモリの確保の方法なのですが、
vector<char> を使用するか HeapAlloc で動的確保するか迷っています。

数MBのファイルを開くとき vector に上限があって開けないということにはならないで
しょうか?

よろしくおねがいします。


引用未解決
トピックタグ
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

vecterのメモリアロケータは変更可能ですが、
Windows環境でデフォルトが数MB以下という実装はまずないでしょう。
(開発環境は書いた方がいいですよ)
#文字列だと用途次第ではstd::stringの方がいい可能性もあるかも


返信引用
U
 U
(@U)
ゲスト
結合: 21年前
投稿: 6
Topic starter  

環境は Visual C++ 6.0 SDK です。

std::stringはほとんど知らないのですが例えばTextOut関数でstring型は使用できるので
しょうか?

初心者なものですいません(^_^;)


返信引用
U
 U
(@U)
ゲスト
結合: 21年前
投稿: 6
Topic starter  

環境は Visual C++ 6.0、SDK です。

std::stringはほとんど知らないのですが例えばTextOut関数でstring型は使用できるので
しょうか?

初心者なものですいません(^_^;)


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

std::stringクラスにはconst char*型を返すメソッドがあります。

c_str
http://www.cppll.jp/cppreference/cppstring_details.html#c_str

これを使えば、可能です。
# 厳密に言うと、c_strメソッドから使えるのはTextOut関数ではなく、
# TextOutA関数ですね。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

std::stringをまず調べて見てはどうでしょう。
STLの話なので調べればわかりそうな気がします。
TextOutの引数に引き渡せる形でstringからデータが取り出せれば、
使えると判断してよいのではないでしょうか?
あと、自分で実験してみる事もお勧めします。
開発環境があるのであれば、出来るはずです。


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

例えばstring::c_str()でconst char*が、
vecterと違って文字列長とかも取れます。


返信引用
U
 U
(@U)
ゲスト
結合: 21年前
投稿: 6
Topic starter  

すいません調べずに質問してしまいました。

c_strを使ってみましたが

error C2664: 'TextOutA' : 4 番目の引数を 'const char *(void) const' から
'LPCSTR' に変換できません。

とでるのですが'const char *(void) const'とは何なんでしょうか?
正直C++はほとんど知りません。。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

c_strはメソッドです。メンバ変数ではありません。
末尾に () をちゃんとつけてください。
(()をつけないと、関数ポインタを渡すことになってしまいます。)

s.c_str()

>とでるのですが'const char *(void) const'とは何なんでしょうか?
それはc_strメソッドの関数の型です。


返信引用
U
 U
(@U)
ゲスト
結合: 21年前
投稿: 6
Topic starter  

すいません c_str の後に () を付け忘れていました。
うまくコンパイルできました。

vectorで文字列を確保できそうですし解決です。

どうもありがとうございました。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

チャレンジするのは良い事だけど、言語の知識無しでプログラミングをいきなりするのは
効率が悪いと思いますよ。
C++言語の勉強をしてちゃんと文法の基礎は頭に入れておいた方が正解です。
肝心のエディタの中身よりも文法で躓いてしまう事が多いと思いますから。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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