• ベストアンサー

c++ stringの使い方

お世話になります。 最近c++始めました。 stringの使い方がよくわかりません。 以下のstringの使い方が問題ないか確認頂けますか。 スマホで書くため、文法が合ってないと思いますが、stringの使い方だけ確認させてください。 引数にstringで囲って渡すのは実装として普通行いますか。 やってはいけないですか。 是非ご教示ください。 #define STR1 "mojiretu" main() if(check(string(STR1))) { } bool check(string str) { }

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

間違っちゃいないけど、直に const string でかまわんのでは? #include <iostream> #include <string> const std::string STR1 = "mojiretu"; bool even_length(const std::string& str) { return str.length() % 2 == 0; } int main() { if ( even_length(STR1) ) { std::cout << STR1 << " : even\n"; } else { std::cout << STR1 << " : odd\n"; } }

zzzyon
質問者

お礼

とても分かりやすいサンプルありがとうございます。 少し進みました。

関連するQ&A

  • String型とchar型の変換エラーです

    今晩は!またまたこの掲示板にきました。よろしくお願いします。 文字列かブランクを取り出すコードを書きましたが、 -------- char ch_check = str.charAt(i+1) ; if(ch_check ==" ") { --------- のところでString型とchar型の混合は受け入れられませんのようなエラーが出ました。 if(ch_check ==" "をboolean型でうけるのも拒否されました。 どこをどのようにしてやればよいでしょうか。 JAVA初心者です、特に文字列の取り扱いは評判通りわかり難くくないています。 よろしくお願いします。 ---------- public class Mojiretu_Blank { public static void main(String[] args) { String str = "This is a pen."; int i = 1 ; int blank_count = 0 ; while( i < (str.length()+1) ) { char ch_check = str.charAt(i+1) ; if(ch_check ==" ") { blank_count ++ ; System.out.println(ch_check); } else{} System.out.print("ブランクの数は" + blank_count + "個です。"); } } }

    • ベストアンサー
    • Java
  • stringについて

    確認したいのですが、ある関数の引数はconst string& strでやる場合 文字列リテラルは、ヒープが確保してそれをポインタであるstringに渡される。だからコピーされる手間が減るとういことでよろしいのでしょうか? 環境はvisual C++ 2005です。

  • 関数の引数

    こんにちわ。 ご存知の方、ご教授してもらえないでしょうか? VB.net2005を使っているのですが 関数の引数に変数をセットして、別関数で 引数に対してデータをセットすることは可能でしょうか? C言語でいうところのポインタを引数に渡し ポインタアドレスに書き込むような処理はVB.netでは 可能なんでしょうか? 下記のような事は試したのですが、うまく出来ませんでした(。。; public sub test1() dim mojiretu as string test2( mojiretu ) msgbox(mojiretu) end sub public sub test2( str as string) str = "文字列" end sub

  • stringのreplace

    import java.io.*; public class ex51c { public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); while(true) { System.out.print("String> "); String str= in.readLine(); if(str.equals("")) { break; } String res = ""; res =str.replace('a', '*') returns str.replace('e', '*') returns str.replace('i', '*') returns str.replace('o', '*') returns str.replace ('u', '*'); System.out.println(res); } } } このようなプログラムを作ってみたのですが、 コンパイル時にエラーが出ます。 どこを直せばいいのでしょうか。教えてください。

    • ベストアンサー
    • Java
  • Stringのコピーについて教えてください。

    いつも、お世話になってます。 現在、VisualC++.NET(Managed)でプログラミングしているのですが 下記のコード(敬略)でString値がコピーできません。 public class aaa{ private: String *str = S"AAA"; public : GetAAA( String *cp ){ cp = String::Copy( str ); } } class main{ String *getter; aaa::GetAAA( getter ); } getterに"AAA"が入っていることを期待していたのですが デバッグすると何も入っていませんでした。 原因がわからないので、教えてください。(ガベコレ?) あと分かるようでしたら対処法もお願いします。 <(__)>

  • C++ strlenに関して

    visual studio 2010を使ってC++の勉強を始めました。 これまではJAVAによる開発をやっていました。 strlenの定義を観ようと思い定義へ移動すると string.hの中に下記のように書かれていました。 -------------------------------------------------------------------- _Check_return_ size_t __cdecl strlen(_In_z_ const char * _Str); ----------------------------------------------------------------------- 初歩的な事かもしれないのですが、上記のコードの意味が理解できず 困っております。 返り値の型 関数名strlen(引数の型); という順番で書かれているものと思っているのですが、 返り値が下記3つ有るという事でしょうか? ・_Check_return_ ・size_t ・__cdecl また、引数const char * _Strの部分は変更不可能なchar型へのポインタ という事だと解るのですが、 _In_z_が何を意味しているのか理解できません。 --------------------------------------------------------------------------- #define _In_z_ _Pre_z_ _Deref_pre_readonly_ ---------------------------------------------------------------------------- と書かれているのですが、 #define A B でBをAで置き換えるという事だと思っているのですが、 #define A B C となっている場合はどういう意味になるのでしょうか?

  • C アルファベットのカウント

    #include<stdio.h> #define N 97 #define M 122 int main(void) { char str[ ]="national university"; int i,h,count; char check; for(h=N-1;h<=M;h++){ h++; char check = (char)h; for(i=0;str[i] != '\0';i++){ if(str[i] = check){ count++; } } printf("%c:%d\n",check,count); } } というコードで、アルファベットをそれぞれ何文字使用しているか調べるつもりだったのですが、結果は次のようになってしまいました。解説お願いします。 a:28 c:56 e:84 g:112 i:140 k:168 m:196 o:224 q:252 s:280 u:308 w:336 y:364 {:392

  • C++のSTL mapを使用するとセグメンテーション違反となる

    こんにちは。C++でSTLのmapの簡単な使用テストを以下のプログラムで行っており、動作確認ができました。 /* Assoc_array.c */ #define MAIN // (#include省略) using namespace std; namespace Usefuls { class Assoc_array_str { private: map<string, string> _h; public: void set(string key, string val); string get(string key); }; void Assoc_array_str::set(string key, string val){ _h.insert(pair<string, string>(key, val)); } string Assoc_array_str::get(string key){ map<string, string>::iterator p; p = _h.find(key); return p->second; } } #ifdef MAIN int main(){ Usefuls::Assoc_array_str assoc; assoc.set("Konnichiwa", "Hello"); cout << assoc.get("Konnichiwa") << endl; return 0; } #endif /* ここまで */ しかし、これを以下のように他のファイルから呼び出すと(先頭の#define MAINを#undef MAINに変えます)、「セグメンテーション違反です」というメッセージが出てしまいます。 /* Aa_test1.c */ #include <iostream> using namespace std; namespace Usefuls { class Assoc_array_str { public: void set(string, string); string get(string); }; } int main(){ Usefuls::Assoc_array_str assoc; assoc.set("Konnichiwa", "Hello"); cout << assoc.get("Konnichiwa") << endl; return 0; } /* ここまで */ コンパイル方法は以下の通りです。 g++ -c Assoc_array.c g++ Aa_test1.c Assoc_array.o また、使用プラットホームはLinuxのCentOS 4.3です。 原因が分かる方、ご回答をよろしくお願いします。

  • String typeの引数をつかって 変数はつくれますか?

    いつもお世話になっております。 以下のように、引数を使って、変数をていぎしたいのですが。。。 public static void main(Stirng[] arg){ String hikisuu = "サンプル"; method(hikusuu); } public static void method(String hikisuu){ int hikisuu = 5; } java でこのようなことは可能でしょうか? (実際やったらエラーが出ました...) ほかの方法で、これと同じようなことを実現でくる方法はありますでしょうか? よろしくおねがいします。

    • ベストアンサー
    • Java
  • C# インターフェイスの実装

    インターフェイスの実装でエラーが出て困っています。 「'(略).SeatCondition' はインターフェイスメンバ '(略)ICondtion.Judge(略)を実装しません。」 とエラー表示されます。 //条件判定クラスのInterface public interface ICondtion { bool Judge(RsvReservEmptySearchPerson.ReserveData aReserve); } //曜日判定のクラス public class DayOfWeekCondition : ICondtion // こちらはエラーがでない { private DayOfWeek mExpectedDayOfWeek; public DayOfWeekCondition(DayOfWeek aDayOfWeek) { mExpectedDayOfWeek = aDayOfWeek; } public bool Judge(RsvReservEmptySearchPerson.ReserveData aReserve) { if (aReserve.Date.DayOfWeek == mExpectedDayOfWeek) { return true; } return false; } } //ユニット判定のクラス public class SeatCondition : ICondtion // ここにエラーが出る。 { private string mExpectedSeatId; public SeatCondition(string aSeatId) { mExpectedSeatId = aSeatId; } public bool Judge(RsvReservEmptySearchPerson.ReserveData aReserve) { foreach (RsvSeatData tSeat in aReserve.Seats) { if (tSeat.Id == mExpectedSeatId) { return true; } } return false; } } どこがおかしいのかわかりません。 ご教示お願いします。

専門家に質問してみよう