读取文本中的数字(其中包含中英文字符)

来源:互联网 发布:华为mate8软件搬家 编辑:程序博客网 时间:2024/05/05 15:22
// c++_5.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <fstream>#include <iostream>#include <string>#include <vector>#include <sstream>using namespace std;bool JudgeNum(string str, int& iTmp){bool bNum = true;string::size_type strSize = str.size();if (strSize == 0 ){bNum = false;}for (int i = 0; i < strSize; ++i){char ch = str.at(i);if ((ch < '0') || (ch > '9')){bNum = false;break;}}if (bNum){istringstream iss(str);iss >> iTmp;}return bNum;}int _tmain(int argc, _TCHAR* argv[]){ifstream infile("C:\\Users\\sony\\Desktop\\1.txt");if (!infile){cout << "File open error";}int a, b;vector<int> iVec;int iTmp = 0;string strTmp;if (!infile){return -1;}while (getline(infile, strTmp, ' ')){if (JudgeNum(strTmp, iTmp)){iVec.push_back(iTmp);}}infile.close();system("pause");return 0;}
istringstream类用于执行C++风格的串流的输入操作。
ostringstream类用于执行C风格的串流的输出操作。

strstream类同时可以支持C风格的串流的输入输出操作。

istringstream是由一个string对象构造而来,istringstream类从一个string对象读取字符。
istringstream的构造函数原形如下:
istringstream::istringstream(string str);


用stringstream转化

int _tmain(int argc, _TCHAR* argv[]){stringstream strStream;//int -> stringstring result;int i = 999;strStream << i; //将int输入流strStream >> result; //从strstream中输出//进行多次转换时要clear()std::stringstream stream;int first, second;stream<< "456"; //插入字符串stream >> first; //转换成intstd::cout << first << std::endl;stream.clear(); //在进行多次转换前,必须清除stream
        stream.str("");stream << true; //插入bool值stream >> second; //提取出intstd::cout << second << std::endl;system("pause");return 0;}


原创粉丝点击