5

私は次のようなphone.txtを持っています:

09236235965
09236238566
09238434444
09202645965
09236284567
09236235965
..and so on..

このデータをC++で1行ずつ処理し、変数に追加するにはどうすればよいですか。

string phonenum;

ファイルを開かなければならないことはわかっていますが、開いた後、ファイルの次の行にアクセスするにはどうすればよいですか?

ofstream myfile;
myfile.open ("phone.txt");

また、変数については、プロセスがループさphonenumれ、phone.txtからの現在の行で変数が処理されます。

読み取らphonenumれた最初の行が最初の行である場合と同様に、すべてを処理してループします。これphonenumが2行目で、すべてを処理し、ファイルの最後の行の終わりまでループします。

助けてください。私はC++を初めて使用します。ありがとう。

4

3 に答える 3

6

コメントをインラインで読んでください。彼らは、これがどのように機能するかを学ぶのを助けるために何が起こっているのかを説明します (うまくいけば):

#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>

int main(int argc, char *argv[])
{
    // open the file if present, in read mode.
    std::ifstream fs("phone.txt");
    if (fs.is_open())
    {
        // variable used to extract strings one by one.
        std::string phonenum;

        // extract a string from the input, skipping whitespace
        //  including newlines, tabs, form-feeds, etc. when this
        //  no longer works (eof or bad file, take your pick) the
        //  expression will return false
        while (fs >> phonenum)
        {
            // use your phonenum string here.
            std::cout << phonenum << '\n';
        }

        // close the file.
        fs.close();
    }

    return EXIT_SUCCESS;
}
于 2012-11-23T17:18:44.190 に答える
3

単純。ifstreamまず、ではなくが必要であることに注意してくださいofstream。ファイルから読み取るときは、それを入力として使用しているため、iin ifstream. std::getline次に、ファイルから行を取得して処理するために使用して、ループします。

std::ifstream file("phone.txt");
std::string phonenum;
while (std::getline(file, phonenum)) {
  // Process phonenum here
  std::cout << phonenum << std::endl; // Print the phone number out, for example
}

while ループ条件である理由std::getlineは、ストリームのステータスをチェックするためです。とにかく失敗した場合std::getline(たとえば、ファイルの最後で)、ループは終了します。

于 2012-11-23T17:19:17.467 に答える
1

出来るよ :

 #include <fstream>
 using namespace std;

 ifstream input("phone.txt");

for( string line; getline( input, line ); )
{
  //code
}
于 2012-11-23T17:07:15.380 に答える