您的位置:首页 > 其它

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

2013-11-22 10:58 113 查看
// 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 -> string
string result;
int i = 999;
strStream << i; //将int输入流
strStream >> result; //从strstream中输出

//进行多次转换时要clear()
std::stringstream stream;
int first, second;
stream<< "456"; //插入字符串
stream >> first; //转换成int
std::cout << first << std::endl;
stream.clear(); //在进行多次转换前,必须清除stream
stream.str("");
stream << true; //插入bool值
stream >> second; //提取出int
std::cout << second << std::endl;

system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐