ch05.01.c

来自「C++ Primer(第三版)的随书源代码」· C语言 代码 · 共 75 行

C
75
字号
// #include <fstream>
#include <fstream.h>
#include <string>
#include <vector>

/*****
 *****
 Please enter name of file to open: infile
 original string: fa.disney.com
 original string: research.att.com
 original string: vnet.ibm.com
 transformed string: fa_disney_com
 transformed string: research_att_com
 transformed string: vnet_ibm_com
 *****
 *****/

int main()
{
	string fileName; 
	cout << "Please enter name of file to open: ";
	cin >> fileName;

	if ( fileName.empty() ) 
	{
     		// yes, extreme: but we have a point to illustrate
     		cerr << "fileName is empty. bailing out. bye!\n";
     		return -1;
	}

	ifstream inFile( fileName.c_str() ); 
	if ( !inFile ) {
		cerr << "unable to open file. bailing out. bye!\n";
     		return -2;
	}

	string inBuf;          
	vector< string > text; 

	while ( inFile >> inBuf ) 
	{
		cout << "original string: " << inBuf << endl;

		string::iterator iter = inBuf.begin(), 
				 endit = inBuf.end();

		for ( ; iter != endit; ++iter )
		{
              		// current compiler does not support this!
			// if (( char ch = *iter ) == '.' ) 
			char ch = *iter;;
              		if ( ch == '.' ) 
			   { ch = '_'; *iter = ch; }
		}

        	text.push_back( inBuf );
		
	}

	if ( text.empty() )
     		return 0;

	// one declaration statement, two definitions
	vector<string>::iterator iter = text.begin(),
                         	 iend = text.end();
	while ( iter != iend ) 
	{
        	cout << "transformed string: " << *iter  << '\n';
        	++iter;
	}

	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?