web-dev-qa-db-ja.com

文字列の最初の数文字のみを選択するC ++

C++を使用して文字列の最初の8文字を選択したい。今私は8文字の長さの一時的な文字列を作成し、別の文字列の最初の8文字で埋めます。

ただし、他の文字列が8文字でない場合、不要な空白が残ります。

string message = "        ";

const char * Word = holder.c_str();

for(int i = 0; i<message.length(); i++)
    message[i] = Word[i];

Word"123456789abc"の場合、このコードは正しく機能し、messageには"12345678"が含まれます。

ただし、Word"1234"などの短い場合、メッセージは"1234 "になります。

文字列の最初の8文字、または8文字より短い場合は文字列全体を選択するにはどうすればよいですか?

7
user3483203

std::string::substr

std::string str = "123456789abc";
std::string first_eight = str.substr(0, 8);
11
cadaniluk

文字列に対して resize を呼び出すだけです。

6
David Schwartz

私があなたを正しく理解しているなら、ただ書いてください

std::string message = holder.substr( 0, 8 );

文字配列から文字を取得する必要がある場合は、たとえば次のように書くことができます

const char *s = "Some string";

std::string message( s, std::min<size_t>( 8, std::strlen( s ) );
3

またはこれを使用することができます:

#include <climits>
cin.ignore(numeric_limits<streamsize>::max(), '\n');

最大値が8の場合、そこで停止します。しかし、あなたは設定する必要があります

const char * Word = holder.c_str();

から8.と書いてください。

 const int SIZE = 9;
 char * Word = holder.c_str();

これが機能するかどうか教えてください。

彼らがいずれかの時点でスペースに当たった場合、それはスペースまでしか読み取れません。

0
Katie Stevers