Cのscanf("%s")
に似た単語(空白をスキップし、空白が見つかるまで文字を読む)を読むにはどうすればよいですか?Ada文字列を読み取る(scanf%s相当)
1
A
答えて
3
標準入力から単語を読み込みます。関数として記述されます。 (テストされていません。)
function Next_Word return String is
package Latin_1 renames Ada.Characters.Latin_1;
subtype Whitespace is Character
with Static_Predicate => Whitespace in ' ' | Latin_1.HT;
use all type Ada.Strings.Unbounded.Unbounded_String;
Word : Ada.Strings.Unbounded.Unbounded_String;
Next : Character;
begin
Skip_Leading_Space:
loop
Ada.Text_IO.Get (Next);
exit when not (Next in Whitespace);
end loop Skip_Leading_Space;
Read_Word:
loop
Word := Word & Next;
Ada.Text_IO.Get (Next);
exit when Next in Whitespace;
end loop Read_Word;
return To_String (Word);
end Next_Word;
2
Skip_Leading_Space:
loop
Next := Ada.Text_IO.Get;
exit when not Next in Whitespace;
end loop Skip_Leading_Space;
Read_Word:
loop
Word := Word & Next;
Next := Ada.Text_IO.Get;
exit when Next in Whitespace;
end loop Read_Word;
2
あなたはスキャンするので、それは、この目的のためにエイダ標準ライブラリで提供されたものを使用するのが最善です。 1つの候補はAda.Strings.Fixed.Find_Token
です。
with Ada.Strings.Fixed, Ada.Strings.Maps.Constants, Ada.Text_IO;
use Ada.Text_IO, Ada.Strings;
procedure Read_Word is
Text : constant String := Get_Line;
First : Positive;
Last : Natural;
White : Maps.Character_Set := Maps.To_Set (" ");
begin
Fixed.Find_Token
(Source => Text,
Set => White,
Test => outside,
First => First,
Last => Last);
Put_Line ("word is: " & Text (First .. Last) & '.');
end Read_Word;
関連する問題
- 1. scanfで小文字を読み取る
- 2. scanfでC++文字列を読み取る
- 3. scanf( "%s")に非ASCII文字を入力
- 4. リソース文字列の読み取り値が "S í"に変更
- 5. 読み取り、文字列
- 6. PHP SimpleXML - 文字列を読み取る
- 7. JSON文字列を読み取る
- 8. fscanfで文字列を読み取る
- 9. C:のscanf文で文字を読む返しごみ値
- 10. 1文字のみのscanf
- 11. 2文字の間の文字列を読み取る
- 12. URLクエリ文字列から特殊文字を読み取る
- 13. C# - NewLine文字を文字列で読み取る場合
- 14. scanf charポインタの文字列
- 15. 文字列形式のScanf
- 16. 入力文字列scanf
- 17. 文字列のcumsumに相当R
- 18. scanf()からソース文字列を読み込んだ後、文字列がコピーされません。
- 19. CentOS相当のdpkg -s
- 20. Cの文字列からデータを読み込む(scanfのように)
- 21. Scalaは読み取りXML文字列
- 22. 読み取りエラー文字列リソース
- 23. scanfで文字列を解析する
- 24. C:読み込み入力文字列を読み込み、文字配列
- 25. 文字列の文字を読み取る際にエラーが発生しました。メモリを割り当てる
- 26. C++はifstreamカントは、文字列を読み、読み文字
- 27. Clojureの読み込み文字列と読み込み文字列の違い
- 28. ring:httpリクエストの本文を文字列として読み取る
- 29. 複数のカンマ区切り文字列を文字列から読み取る
- 30. Javaで文字列化されたJSON文字列を読み取る方法
ラベルはコードを明確にするためのもので、in、out、outパラメータを使用してプロシージャを作成できます。関数を作成することもできますが、使用するAdaリビジョンによっては、すべての型のパラメータ渡しモードを使用できないことがあります。 –
私は初めに完全な解決策を教えるのはあまりにも先生です。 ;-) –
ソースを読みやすくするために、ラベルを絶対にドロップしません。 –