#include <iostream>
#include <fstream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
void ex1_xtra2()
{
//輸入一個文件名稱
string file_name;
cout << "Please enter a file to be opened: (try input.txt or text.txt) ";
cin >> file_name;
//判斷是否為空
if ( ! cin || file_name.empty() )
{
cerr << "oops! unable to read file name\n"; return;
}
//建立一個讀取的ifile,由於讀取 input.txt中的內容
ifstream ifile( file_name.c_str() );
if ( ! ifile )
{
cerr << "oops! unable to open input file: "
<< file_name << endl;
return;
}
else
{
cerr << "!! ok: opened " << file_name << " for input\n";
}
//新建一個input.txt.sort文件,用於保存排好序的文字
//類型是輸出ofile
file_name += ".sort";
ofstream ofile( file_name.c_str() );
if ( ! ofile )
{
cerr << "oops! unable to open output file: "
<< file_name << endl;
return;
}
else
{
cerr << "!! ok: opened " << file_name << " for output\n";
}
string word;
vector< string > text;
//讀取內容到word至文件末尾
while ( ifile >> word )
{
//插入到容器text中
text.push_back( word );
}
if ( text.empty() )
{
cerr << "bummer! input file is empty: bailing out\n";
return;
}
else
{
cerr << "!! ok: read " << text.size() << " strings from input\n";
}
//排序操作
sort( text.begin(), text.end() );
int cnt = 0;
for ( vector<string>::iterator iter = text.begin();
iter != text.end(); ++iter )
{
//排列格式
cnt += iter->size() + 1;
if ( cnt > 40 )
{
ofile << '\n';
cnt = 0;
}
//輸出到ofile中,即input.txt.sort文件中
ofile << *iter << ' ';
}
cout << "ok: wrote sorted strings into " << file_name << endl;
}
int main(void)
{
ex1_xtra2();
return 0;
}
intput.txt
Alice Emma has long flowing red hair.
Her Daddy says when the wind blows
through her hair, it looks almost alive,
like a fiery bird in flight. A beautiful
fiery bird, he tells her, magical but untamed.
``Daddy, shush, there is no such thing,'' she
tells him, at the same time wanting him to
tell her more. Shyly, she asks, ``I mean,
Daddy, is there?''
input.txt.sort
A Alice Daddy Daddy, Emma Her Shyly,
``Daddy, ``I a alive, almost asks, at beautiful
bird bird, blows but fiery fiery flight.
flowing hair, hair. has he her her her, him
him, in is is it like long looks magical
mean, more. no red same says she she shush,
such tell tells tells the the there there?''
thing,'' through time to untamed. wanting when
wind
c_str()函數返回一個指向正規C字符串的指針常量, 內容與本string串相同.
解決的方法有兩種:
1.用c_str()函數,下面詳細介紹。
2.包含頭文件"string"
下面我們進入正題,請出我們的今天的主角 c_str() 他是一個函數哦。。。不要忘記了括號。。
