既知のconst文字列と同じ長さの新しい文字列を宣言するにはどうすればよいですか?

ジョージナ・ダベンポート

私は使用しています:

string letters = THESAMELENGTH; // Assign for allocation purposes.

理由は、私が:

string letters[THESAMELENGTH.length()];

一定ではない表現の苦情があります。

しかし、私が:

string letters[12];

guide const stringのサイズが変更された場合、すべてのインスタンスを変更する必要があるリスクがあります。

しかし、これらのエントリを使用しないときに文字列を割り当てるのはばかげているようです。新しく割り当てた文字列を以前に割り当てたconst文字列と同じ長さにしてから、異なる値を入力するだけです。

私がこれを優雅にそして安全に行うことをどのように勧めますか?

code_dredd

新しく割り当てられた文字列を以前に割り当てられたconst文字列と同じ長さにしてから、異なる値を入力するだけです。

stringクラス/タイプが存在する理由の一部は、その長さを管理しようとすることを心配する必要がないためです。(の配列の問題char。)

を持っている場合は、const std::string tmpすでに初期化された後で何も割り当てることはできません。例えば:

const std::string tmp = "A value";  // initialization
tmp = "Another value";              // compile error

私がこれを優雅にそして安全に行うことをどのように勧めますか?

あなたが本当に特定のサイズに文字列を保持したい場合は、関係なく、その内容の、あなたは常に可能性resizeあなたのstring変数。例えば:

// in some constants.h file
const int MAX_STRING_LENGTH = 16;

// in other files
#include "constants.h"
// ...
std::string word = ... // some unknown string
word.resize(MAX_STRING_LENGTH);

これで、word文字列の長さ/サイズがにMAX_STRING_LENGTHなり、末尾を超えるものはすべて切り捨てられます。

この例はC ++リファレンスからのものです

// resizing string
#include <iostream>
#include <string>

int main ()
{
  std::string str ("I like to code in C");
  std::cout << str << '\n';

  unsigned sz = str.size();

  str.resize (sz+2,'+');
  std::cout << str << '\n';

  str.resize (14);
  std::cout << str << '\n';
  return 0;
}

// program output
I like to code in C
I like to code in C++
I like to code

コンパイル時に文字列変数の長さを尋ねることはできません定義上、実行されていない間は、変数の値、または特定のプログラムの状態を知ることは不可能です。この質問は、実行時にのみ意味があります。

他の人もこれについて言及していますが、あなたの理解に問題があるようですstring letters[12];これにより、stringタイプの配列が得られます。つまり、文字だけでなく、12個の完全な文字列(単語/文など)用のスペースが得られます。

言い換えれば、次のことができます。

for(size_t i = 0; i < letters.size(); ++i)
    letters[i] = "Hello, world!";

したがって、letters変数の名前をより正確なものに変更する必要があります(例words)。

本当に文字が必要な場合(たとえば、単一の文字列の完全なアルファベット)、次のようなことができます。

// constants.h
const std::string ALPHABET_LC = "abc...z";
const std::string ALPHABET_UC = "ABC...Z";
const int LETTER_A = 0;
const int LETTER_B = 1;
// ...

// main.cpp, etc.
char a = ALPHABET_LC[LETTER_A];
char B = ALPHABET_UC[LETTER_B];
// ...

それはすべてあなたが何をする必要があるかに依存しますが、これは良い選択肢かもしれません。

免責事項:これを行うことは実際には私の推奨事項ではないことに注意してください。stringsに自分の長さを管理させる必要があります。たとえば、string値が実際に制限よりも短い場合は、変数が必要以上のスペース/メモリを使用していることになり、それよりも長い場合でも、値は切り捨てられます。どちらの副作用も良くありません、私見。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

型宣言と型ガードの両方で同じ文字列を宣言しないようにするにはどうすればよいですか?

分類Dev

同じ長さの文字列を維持するにはどうすればよいですか?

分類Dev

Java正規表現を使用して、長い文字列内で同じ形式の部分文字列をgrepするにはどうすればよいですか?

分類Dev

幅のセルを文字列の長さと等しくするにはどうすればよいですか?

分類Dev

複数文字の有無にかかわらず、同じ長さの文字列を印刷するにはどうすればよいですか?

分類Dev

文字列の長さを同じリスト内の整数と比較するにはどうすればよいですか?

分類Dev

文字列の長さに応じて日付を変更するにはどうすればよいですか?

分類Dev

PHP-pack()で通常の文字列と同じ文字列を返すにはどうすればよいですか?

分類Dev

Python:文字列の2つの既知の部分の間にある文字列の一部を取得するにはどうすればよいですか?

分類Dev

配列内で同じ文字列値を複数回宣言するにはどうすればよいですか?

分類Dev

motdで正しい長さの文字列を取得するにはどうすればよいですか?

分類Dev

2つの既知の文字列の間に文字列を取得するにはどうすればよいですか?

分類Dev

PySpark列の部分文字列の左側と同じ部分文字列の右側から文字を抽出するにはどうすればよいですか?

分類Dev

2つの文字列で同じ文字の量を取得するにはどうすればよいですか?

分類Dev

入力した文字列の平均の長さを計算するにはどうすればよいですか

分類Dev

Javaで長さのない文字列配列を定義するにはどうすればよいですか?

分類Dev

文字列の長さに応じて印刷するにはどうすればよいですか?

分類Dev

区切り文字として使用するのと同じ記号を含む文字列を解析するにはどうすればよいですか?

分類Dev

文字列内の同じ繰り返し大文字と小文字を検証するにはどうすればよいですか?

分類Dev

javascriptを使用して配列と同じように文字列の値を分割するにはどうすればよいですか?

分類Dev

Pythonで配列を同じ長さのビンに分割するにはどうすればよいですか?

分類Dev

Pythonで配列を同じ長さのビンに分割するにはどうすればよいですか?

分類Dev

文に同じ長さの文字列が含まれている文字列から最初に最も長い単語を取得しようとしていますか?

分類Dev

可変長の文字列を入力し、ユーザー定義の長さの文字列を出力するにはどうすればよいですか?

分類Dev

Javaで長さ0の文字列配列を初期化するにはどうすればよいですか?

分類Dev

さまざまな長さの数字と文字の文字列をRの異なる列に分割するにはどうすればよいですか?

分類Dev

長い文字列からこの文字列を解析するにはどうすればよいですか?

分類Dev

文字列の特定の位置にある特定の文字の存在に基づいて、同じ長さの文字列のリストのメンバーを削除するにはどうすればよいですか?

分類Dev

Python 3で行うのと同じSHA256エンコードされた文字列をJavaScriptで作成するにはどうすればよいですか?

Related 関連記事

  1. 1

    型宣言と型ガードの両方で同じ文字列を宣言しないようにするにはどうすればよいですか?

  2. 2

    同じ長さの文字列を維持するにはどうすればよいですか?

  3. 3

    Java正規表現を使用して、長い文字列内で同じ形式の部分文字列をgrepするにはどうすればよいですか?

  4. 4

    幅のセルを文字列の長さと等しくするにはどうすればよいですか?

  5. 5

    複数文字の有無にかかわらず、同じ長さの文字列を印刷するにはどうすればよいですか?

  6. 6

    文字列の長さを同じリスト内の整数と比較するにはどうすればよいですか?

  7. 7

    文字列の長さに応じて日付を変更するにはどうすればよいですか?

  8. 8

    PHP-pack()で通常の文字列と同じ文字列を返すにはどうすればよいですか?

  9. 9

    Python:文字列の2つの既知の部分の間にある文字列の一部を取得するにはどうすればよいですか?

  10. 10

    配列内で同じ文字列値を複数回宣言するにはどうすればよいですか?

  11. 11

    motdで正しい長さの文字列を取得するにはどうすればよいですか?

  12. 12

    2つの既知の文字列の間に文字列を取得するにはどうすればよいですか?

  13. 13

    PySpark列の部分文字列の左側と同じ部分文字列の右側から文字を抽出するにはどうすればよいですか?

  14. 14

    2つの文字列で同じ文字の量を取得するにはどうすればよいですか?

  15. 15

    入力した文字列の平均の長さを計算するにはどうすればよいですか

  16. 16

    Javaで長さのない文字列配列を定義するにはどうすればよいですか?

  17. 17

    文字列の長さに応じて印刷するにはどうすればよいですか?

  18. 18

    区切り文字として使用するのと同じ記号を含む文字列を解析するにはどうすればよいですか?

  19. 19

    文字列内の同じ繰り返し大文字と小文字を検証するにはどうすればよいですか?

  20. 20

    javascriptを使用して配列と同じように文字列の値を分割するにはどうすればよいですか?

  21. 21

    Pythonで配列を同じ長さのビンに分割するにはどうすればよいですか?

  22. 22

    Pythonで配列を同じ長さのビンに分割するにはどうすればよいですか?

  23. 23

    文に同じ長さの文字列が含まれている文字列から最初に最も長い単語を取得しようとしていますか?

  24. 24

    可変長の文字列を入力し、ユーザー定義の長さの文字列を出力するにはどうすればよいですか?

  25. 25

    Javaで長さ0の文字列配列を初期化するにはどうすればよいですか?

  26. 26

    さまざまな長さの数字と文字の文字列をRの異なる列に分割するにはどうすればよいですか?

  27. 27

    長い文字列からこの文字列を解析するにはどうすればよいですか?

  28. 28

    文字列の特定の位置にある特定の文字の存在に基づいて、同じ長さの文字列のリストのメンバーを削除するにはどうすればよいですか?

  29. 29

    Python 3で行うのと同じSHA256エンコードされた文字列をJavaScriptで作成するにはどうすればよいですか?

ホットタグ

アーカイブ