C++で文字列の文字数を取得するにはどうすればよいですか?std :: stringの文字数を取得する方法は?
答えて
あなたがstd::string
を使用している場合は、length()
を呼び出す:
std::string str = "hello";
std::cout << str << ":" << str.length();
// Outputs "hello:5"
あなたは、C-文字列を使用している場合は、strlen()
を呼び出します。
const char *str = "hello";
std::cout << str << ":" << strlen(str);
// Outputs "hello:5"
それとも、あなたはパスカルスタイルの文字列を使って好きなことが起こる場合(またはFを*****ジョエル・スポルスキlikes to call themのように文字列彼らは末尾のNULLを持つ)、ちょうど最初の文字を逆参照。 C++の文字列(のstd ::文字列)を扱う場合
const char *str = "\005hello";
std::cout << str + 1 << ":" << *str;
// Outputs "hello:5"
パスカルスタイルの文字列を使用するのは正しいですか? – Xarn
length()は文字数ではなくバイト数を返しますか? –
std :: stringの場合は、同じことです(可変長エンコーディングを格納する場合や、std :: stringを使用してマルチバイト文字を格納する場合を除きます)。もしあなたがそうしているのであれば、stdライブラリのものは何も助けにならないでしょう。 wstring、u16stringおよびu32stringの場合、バイトではなく文字数を返します。 (ただし、それらのいずれかで可変長エンコーディングを使用している場合は、独自のstrlenをロールバックする必要があります)。 – Eclipse
std::string str("a string");
std::cout << str.size() << std::endl;
、あなたはlength()やsize()を探しています。どちらも同じ価値を提供するはずです。しかし、Cスタイルの文字列を扱う場合は、strlen()を使用します。
#include <iostream>
#include <string.h>
int main(int argc, char **argv)
{
std::string str = "Hello!";
const char *otherstr = "Hello!"; // C-Style string
std::cout << str.size() << std::endl;
std::cout << str.length() << std::endl;
std::cout << strlen(otherstr) << std::endl; // C way for string length
std::cout << strlen(str.c_str()) << std::endl; // convert C++ string to C-string then call strlen
return 0;
}
出力:実際の文字列オブジェクトの
6
6
6
6
:
yourstring.length();
または
yourstring.size();
古い、Cスタイルの文字列を使用している場合nの代わりに
const char* p = "Hello";
size_t n = strlen(p);
それはあなたが何を言ってるのか、文字列のタイプによって異なります水差し、STL形式の文字列は、Cランタイムライブラリでstrlen
機能があります。文字列の多くの種類があります。
const char*
- Cスタイルのマルチバイト文字列const wchar_t*
- Cスタイルのワイド文字列std::string
- "標準" マルチバイト文字列std::wstring
- 」標準のワイド文字列
3と4は、.size()
または.length()
のメソッドを使用できます。
1について、あなたはstrlen()
を使用することができますが、(=== 0)2については
、あなたがwcslen()
を使用することができます文字列変数がNULLでないことを確認する必要がありますが、文字列変数があることを確認する必要がありますNULLではない(=== 0)
なMFCのCString
などの非標準C++ライブラリ内の他の文字列型は、ありますが、ATLのCComBSTR
、ACEのACE_CString
、というように、そのよう.GetLength()
ような方法で、というように。私は頭の上からすべてのものを覚えていない。
STLSoftライブラリでは、これをすべてstring access shimsと呼んでいます。これは、任意のタイプから文字列の長さ(およびその他の側面)を取得するために使用できます。したがって、上記のすべて(非標準ライブラリを含む)では、同じ関数stlsoft::c_str_len()
を使用します。 This articleは、すべてが完全に明白であるか簡単ではないので、すべての仕組みを記述します。
あなたがのstd ::文字列を使用している場合は、そのための2つの一般的な方法があります
std::string Str("Some String");
size_t Size = 0;
Size = Str.size();
Size = Str.length();
あなたは(char型の*またはconstのchar *を使用)Cスタイルの文字列を使用している場合は、その後のことができます。
const char *pStr = "Some String";
size_t Size = strlen(pStr);
文字列を入力してその長さを見つけるのが最も簡単な方法です。 std名前空間を気にせずに文字列の長さを得るために
// Finding length of a string in C++
#include<iostream>
#include<string>
using namespace std;
int count(string);
int main()
{
string str;
cout << "Enter a string: ";
getline(cin,str);
cout << "\nString: " << str << endl;
cout << count(str) << endl;
return 0;
}
int count(string s){
if(s == "")
return 0;
if(s.length() == 1)
return 1;
else
return (s.length());
}
count(文字列)がstring :: length()はしないと思いますか?文字列の余分なコピーを不必要に作成し、文字列に20億を超える文字がある場合は負の値を返します。 – Eclipse
最も簡単な方法は、スペースを入れずに/スペース
#include <iostream>
#include <string>
using namespace std;
int main(){
string str;
cin>>str;
cout<<"Length of given string is"<<str.length();
return 0;
}
- 1. std :: stringから最初の文字を取得する
- 2. WINAPI:編集のテキストをstd :: stringに取得する方法は?
- 3. のstd ::リスト<std::string> ::イテレータはstd ::文字列にする
- 4. std :: string&std :: wstringからchar整数値を取得する
- 5. 2つのイテレータの間で `std :: string 'の部分文字列を取得する
- 6. std :: stringと文字列
- 7. 文字列内の文字数を取得する方法
- 8. 複数のchar *文字列をstd :: stringにフォーマットする
- 9. `std :: function`の引数の数を取得する方法は?
- 10. 特定の文字数をstd :: basic_istreamからstd :: stringにコピーする
- 11. std :: stringを小文字に変換する関数
- 12. PKCS7_signの結果をchar *またはstd :: stringに取得する方法
- 13. std :: stringの各文字のアドレス
- 14. .NETのタブの文字数を取得する方法は?
- 15. .NET System :: std :: stringへの文字列
- 16. 文字列の実数型を取得する方法は?
- 17. JTextFieldの文字数を取得する方法は?
- 18. std :: stringとC#の参照文字列を交換する方法
- 19. リンクリストの文字列から最初の文字を取得する方法は?
- 20. 簡単な質問:なぜ文字列ライブラリ関数std :: string :: findは常にstd :: string :: nposを返しますか?
- 21. JavaのMap <String、String []>の文字列表現を取得する簡単な方法は?
- 22. 文字列変数からテキストを取得する方法は?
- 23. 文字列で数値を取得する方法は?
- 24. C++のファイルからstd :: stringの文字列を直接読み取る方法は?
- 25. std :: stringとstd :: mapオペレーションがUnicode文字列にある
- 26. std :: stringからいくつかの文字を取得するにはどうすればいいですか?
- 27. 文字列の一意の文字の数を取得する方法
- 28. std :: stringやSTLを使わずに、C++で文字配列に複素数を格納する方法は?
- 29. 文字とスペースの間の文字を取得する方法
- 30. 文字列内で複数回繰り返す文字列の特定のインスタンスを取得する方法
どんななし
文字列を
文字列を以下の通りです。あなたは文字列を扱っていますか? std :: string? cstring?ヌル終了文字列? –
最も愚かでない方法は、それをループして文字を自分で数えることです。 – Krythic