逐行读取并在C ++中从行中获取单词

时间:2015-11-09 00:34:57

标签: c++ getline

string line;
string filename;
cout << "Please enter filename :" << endl;
cin >> filename;
ifstream myfile(filename);
/*cout << "Please enter the name of file that you write results : "<< endl;
cin >> wfile; */
if(myfile.is_open())
{

    while(getline(myfile,line))
    {
        convert(line);

    }

    //getline(myfile,line);
    //pushintoVector(line,buffer);
}
else
{
    cout << "Error : File could not be opened" << endl;

}

try{
myfile.close();
myFile.close();
}catch(exception &e1)
{
    cout << endl;
}
//system("PAUSE");
return 0;

之后我想将当前行发送到另一个函数,如:

void convert(string lines)
{
    myFile.open("yazici.txt");

    string buf;
     string convertingnum;
    istringstream ss(lines);

    while(ss >> buf)
    {                

那么我如何从一行读取单词并根据if-else结构进行更改并将其写入另一个文件。编辑:还有一个函数或方法来确定行长度吗?

1 个答案:

答案 0 :(得分:1)

  1. 在打开输入文件的同时打开输出文件。
  2. 将输出流作为参数传递给convert,而不是每次都在函数中打开文件。
  3. 使用比myfilemyFile更好的名称。
  4. ifstream inputFile(filename);
    ofstream outputFile("yazici.txt");
    
    if(inputFile.is_open())
    {
       while(getline(inputFile,line))
       {
          convert(outputFile, line);
       }
    }
    

    和......

    void convert(std::ostream& outputFile,
                 string lines)
    {
       string buf;
       string convertingnum;
       istringstream ss(lines);
    
       while(ss >> buf)
       {
           outputFile << buf << std::endl; //???
       }
    }