操作する必要のある文字列インターフェイス(const char * value、uint32_t length)があります。
1)すべて小文字にする必要があります
2)「;」の後にあるすべての文字を削除する必要があります セミコロン
誰かがこれを行うことができるC/C ++ライブラリを私に指摘するのを手伝ってもらえますか?char配列を反復処理する必要はありません。
前もって感謝します
操作する必要のある文字列インターフェイス(const char * value、uint32_t length)があります。
1)すべて小文字にする必要があります
2)「;」の後にあるすべての文字を削除する必要があります セミコロン
誰かがこれを行うことができるC/C ++ライブラリを私に指摘するのを手伝ってもらえますか?char配列を反復処理する必要はありません。
前もって感謝します
1)
std::transform(str.begin(), str.end(), str.begin(), ::tolower);
2)
str = str.substr(0, str.find(";"));
ここを参照してください: http: //ideone.com/fwJx5:
#include <string>
#include <iostream>
#include <algorithm>
std::string interface(const char* value, uint32_t length)
{
std::string s(value, length);
std::transform(s.begin(), s.end(), s.begin(), [] (char ch) { return std::tolower(ch); });
return s.substr(0, s.find(";"));
}
int main()
{
std::cout << interface("Test Case Number 1; ignored text", 32) << '\n';
}
出力:
test case number 1
(1)実行する作業が少なくなる可能性があるため、最初に(2)実行することをお勧めします。
従来のC関数を使用している場合はstrchr()
、最初の';'を見つけるために使用できます。そして、それを'\ 0'(文字列が可変の場合)に置き換えるか、ポインタ演算を使用して別のバッファにコピーします。
tolower()
ASCII(ASCIIを使用していると想定しています)を小文字に変換するために使用できますが、これを行うには、残りのループを反復処理する必要があります。
例えば:
const char* str = "HELLO;WORLD";
// Make a mutable string - you might not need to do this
int strLen = strlen( str );
char mStr[ strLen + 1];
strncpy( mStr, str, strLen );
cout << mStr << endl; // Prints "HELLO;WORLD"
// Get rid of the ';' onwards.
char* e = strchr( mStr, ';' );
*e = '\0';
cout << mStr << endl; // Prints "HELLO"
for ( char* p = mStr; p != e; *p = tolower(*p), p++ );
cout << mStr << endl; // Prints "hello"