Q
Cで固定サイズ
4
A
答えて
0
あなたは何をしたいのか分かりませんが、std::array<char, 100> buffer;
とすればうまくいくはずです。
あなたは、このような文字列を取得することができます:あなたはこの
std::string s;
s.reserve(100);
ようstring::reserveメソッドを使用することができますしかし、あなたがより多くの文字を追加することができますので、これは、固定サイズではありません
std::string str(std::begin(buffer),std::end(buffer);
2
を例えばstring :: push_backの文字列。
3
std::string_view
は、std::string
と同じ(不変の)インターフェイスを提供します。一方
、あなたはchar型の配列をラップし、あなたは、例えばを選択し、それにどんなサービスを追加することができます
template<std::size_t N>
struct immutable_string
{
using ref = const char (&)[N+1];
constexpr immutable_string(ref s)
: s(s)
{}
constexpr auto begin() const { return (const char*)s; }
constexpr auto end() const { return begin() + size(); }
constexpr std::size_t size() const { return N; }
constexpr ref c_str() const { return s; }
ref s;
friend std::ostream& operator<<(std::ostream& os, immutable_string s)
{
return os.write(s.c_str(), s.size());
}
};
template<std::size_t NL, std::size_t NR>
std::string operator+(immutable_string<NL> l, immutable_string<NR> r)
{
std::string result;
result.reserve(l.size() + r.size());
result.assign(l.begin(), l.end());
result.insert(result.end(), r.begin(), r.end());
return result;
}
template<std::size_t N>
auto make_immutable_string(const char (&s) [N])
{
return immutable_string<N-1>(s);
}
int main()
{
auto x = make_immutable_string("hello, world");
std::cout << x << std::endl;
auto a = make_immutable_string("foo");
auto b = make_immutable_string("bar");
auto c = a + b;
std::cout << c << std::endl;
}
0
あなたがCで行ったまさに行うためのC++メソッドであるstd::array
を、使用することができますあなたは(のような、例えば、その100
がスタンドで1'000'000
用の場合)による大規模なバッファサイズにスタックオーバーフロー心配している場合。
std::array<char, 100> buffer;
あなたは動的代わりにそれを割り当てることができます。あなたのインターフェース以来
std::unique_ptr<std::array<char, 100>> buffer = std::make_unique<std::array<char, 100>>();
は、そのオペランドとしてchar *
をとり、このオブジェクトは、実行時に、そのサイズを照会することができ、これは十分であるべきです。
関連する問題
- 1. 固定サイズ
- 2. 固定サイズのアンドロイドスクロールタブス
- 3. Googleマップサークルオーバーレイ - 固定サイズ
- 4. 固定サイズのチタンアンドロイドマップ
- 5. Bootstrap navbar固定サイズ
- 6. Qmlボタン固定サイズ
- 7. ダイヤモンドスクエアアルゴリズムの固定サイズ
- 8. pythonで固定サイズのリストを作成するには? C++で
- 9. UITableViewCellまたは固定テキストの固定サイズのimageViewですか?
- 10. 動的イメージラッパーの固定サイズ
- 11. 固定サイズのマルチラインEditText?
- 12. 固定サイズの配列
- 13. は石造ボックス固定サイズ
- 14. マッチ固定サイズの配列
- 15. センター固定サイズのImageViewの
- 16. 私はサイズのフレームを固定している固定サイズのフレーム
- 17. gmpで固定サイズの整数...?
- 18. スクロールで固定レイアウトの可変サイズ
- 19. Json.netコレクションは固定サイズでした
- 20. 固定サイズのArrayListを設定する
- 21. unity2d - 固定サイズにカメラを設定
- 22. 固定サイズの配列へのCの既存のポインタ
- 23. Mongodb C# - 固定サイズのキューを作成する
- 24. 固定サイズの配列が固定されていません
- 25. C#で固定バッファをシリアライズ
- 26. Winformsで固定テーブルC#
- 27. Javascript:固定サイズのキャンバスで可変サイズの画像
- 28. IMAGE_OPTIONAL_HEADER.DataDirectoryは固定サイズか可変サイズですか?
- 29. 固定サイズのコンテナ内で異なる画像サイズ
- 30. Simulinkで可変サイズの配列を固定サイズにパッキング
固定長の文字列でどのような問題を解決したいですか? –
Cで同じことを*正確に*行うことができます。また、配列でも可能です。あるいは、文字列に100文字以上の文字を置くことはできません。それはあなたが何をしようとしているかによって異なります。 –
http://stackoverflow.com/questions/1571901/c-fixed-length-string-class – Shahid