プロジェクトフォルダに「Test.txt」というファイルを作り、中身を↓のように入力して保存しておいてください。
このファイルの中身を文字列としてstring型に読み込んでみます。
<sample program cpp030-01>
#include <iostream> #include <fstream> #include <string> int main() { std::ifstream ifsTest; ifsTest.open("Test.txt", std::ios::in); if (!ifsTest) { return 1; } std::string str; ifsTest >> str; if (ifsTest.is_open()) { ifsTest.close(); } std::cout << "str = " << str << std::endl; return 0; } |
<実行結果>
str = ABC 続行するには何かキーを押してください・・・
C言語のscanf関数やfscanf関数と同じく、空白文字は「区切り文字」となっています。
そのまま読み込むと、区切り文字までのデータしか読み込めません。
区切り文字で分けて読み込みたい場合はこれで良いのですが、一行まとめて読み込みたい場合どうすればよいでしょうか。
C言語では、scanf関数の書式を変えたり、gets関数やfgets関数で対応出来ました。
C++での対応方法を↓に書きます。
<sample program cpp030-02>
#include <iostream>
#include <fstream>
#include <string>
int main()
{
std::ifstream ifsTest;
ifsTest.open("Test.txt", std::ios::in);
if (!ifsTest) {
return 1;
}
std::string str;
std::getline(ifsTest, str);
if (ifsTest.is_open()) {
ifsTest.close();
}
std::cout << "str = " << str << std::endl;
return 0;
}
|
<実行結果>
str = ABC DEF 続行するには何かキーを押してください・・・
getline関数を使って、一行まとめて読み込む事が出来ました。
ノベルゲームなど、これで対応出来そうです。
余裕のある方は、C言語編のファイルを使ったゲームを書き換えてみてください。