C++ 输入输出及txt文件输入示例

std::istream

typedef basic_istream<char> istream;

输入流对象可以读取和解释来自字符序列的输入。 提供了特定的成员来执行这些输入操作(参见下面的函数)。

标准对象 cin 就是这种类型的对象。

在这里插入图片描述

std::istream::getline

istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );

从流中提取字符作为未格式化的输入,并将它们作为 c 字符串存储到 s 中,直到提取的字符是定界字符,或者 n 个字符已写入 s(包括终止的空字符)。

// istream::getline example
#include <iostream>     // std::cin, std::cout

int main () {
    
    
  char name[256], title[256];

  std::cout << "Please, enter your name: ";
  std::cin.getline (name,256);

  std::cout << "Please, enter your favourite movie: ";
  std::cin.getline (title,256);

  std::cout << name << "'s favourite movie is " << title;

  return 0;
}
Please, enter your name: sjn
Please, enter your favourite movie: op
sjn's favourite movie is op

此示例说明如何从标准输入流 (cin) 中获取行

std::ostream

typedef basic_ostream<char> ostream;

在这里插入图片描述
输出流对象可以写入字符序列并表示其他类型的数据。 提供了特定的成员来执行这些输出操作(参见下面的函数)。

标准对象 coutcerrclog 就是这种类型的对象。

std::ostream::operator<<

arithmetic types (1)	
ostream& operator<< (bool val);
ostream& operator<< (short val);
ostream& operator<< (unsigned short val);
ostream& operator<< (int val);
ostream& operator<< (unsigned int val);
ostream& operator<< (long val);
ostream& operator<< (unsigned long val);
ostream& operator<< (float val);
ostream& operator<< (double val);
ostream& operator<< (long double val);
ostream& operator<< (void* val);
stream buffers (2)	
ostream& operator<< (streambuf* sb );
manipulators (3)	
ostream& operator<< (ostream& (*pf)(ostream&));
ostream& operator<< (ios& (*pf)(ios&));
ostream& operator<< (ios_base& (*pf)(ios_base&));
// example on insertion
#include <iostream>     // std::cout, std::right, std::endl
#include <iomanip>      // std::setw

int main() {
    
    
	int val = 65;

	std::cout << std::right;       // right-adjusted (manipulator)
	std::cout << std::setw(10);    // set width (extended manipulator)

	std::cout << val << std::endl; // multiple insertions

	return 0;
}

输出

        65

C++读取txt文件

#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <fstream>
#include <cassert>

using namespace std;

void txt_to_vectordouble(vector<float>& res, string pathname)
{
    
    
	ifstream infile;
	infile.open(pathname.data());   //将文件流对象与文件连接起来 
	assert(infile.is_open());       //若失败,则输出错误消息,并终止程序运行 
	string s;
	while (getline(infile, s)) {
    
    
		istringstream is(s);        //将读出的一行转成数据流进行操作
		double d;
		while (!is.eof()) {
    
    
			is >> d;
			res.push_back(d);
		}
		s.clear();
	}
	infile.close();                 //关闭文件输入流 
}

int main()
{
    
    
	vector<float> data;
	txt_to_vectordouble(data, "./1.txt");
	for (auto a : data) {
    
    
		cout << a << endl;
	}

	return 0;
}

猜你喜欢

转载自blog.csdn.net/Star_ID/article/details/126713178