C++编程,从TXT文档中读取数字
比如说TXT文档两行如下:flkasjlkj12kflasjlk15lkgajkl53klgsaj35我想读取其中的数字,我写的代码是:#include<iostream...
比如说TXT文档两行如下:
flkasjlkj 12 kflasjlk 15
lkgajkl 53 klgsaj 35
我想读取其中的数字,我写的代码是:
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
ifstream infile("save.txt");
int a,b,c,d;
infile >> a >> b>>c>>d;
cout<<a<<b<<c<<d;
return 1;
}
但是读取的int全都是没有意义的,怎么样写才能把12 15 53 35分别赋给a b c d? 展开
flkasjlkj 12 kflasjlk 15
lkgajkl 53 klgsaj 35
我想读取其中的数字,我写的代码是:
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
ifstream infile("save.txt");
int a,b,c,d;
infile >> a >> b>>c>>d;
cout<<a<<b<<c<<d;
return 1;
}
但是读取的int全都是没有意义的,怎么样写才能把12 15 53 35分别赋给a b c d? 展开
3个回答
展开全部
#include <iostream>
#include <string>
#include <vector>
#include<fstream>
#include <sstream>
using namespace std;
// 判断一个字符串是否为一个数字,如果是返回它
bool JudgeNum(string str,int& iTmp)
{
bool bNum = true;
string::size_type szSize = str.size();
for (int i=0;i<szSize;++i)
{
char ch = str.at(i);
if ((ch < '0') || (ch > '9'))
{
bNum = false;
break;
}
}
if (bNum)
{
istringstream iss(str);
iss >> iTmp;
}
return bNum;
}
int main()
{
ifstream infile("F:\\save.txt");
int a,b,c,d;
vector<int> iVec;
string strTmp;
int iTmp = 0;
if (!infile)
{
return -1;
}
while(getline(infile,strTmp,' ')) // 以空格为分隔符,读取每一个词
{
if (JudgeNum(strTmp,iTmp))
{
iVec.push_back(iTmp);
}
}
vector<int>::size_type stCnt = iVec.size();
if (stCnt >= 4)
{
a = iVec.at(0);
b = iVec.at(1);
c = iVec.at(2);
d = iVec.at(3);
cout << a << " " << b << " " << c << " " << d;
}
getchar();
return 1;
}
这个可以获取到文本中任意的数字,但文本里的数字与其他字符之间必须有空格分隔,仅供参考!
其他情况,LZ可自行参考修改。这里只提供个思路.
展开全部
可以一个字符一个字符检查,读取连续的数字,然后转化为数字。
#include<fstream>
#include<iostream>
#include<string>
#include<algorithm>
int main(){
std::ifstream istr("test.txt");
if(istr.is_open()){
std::string tmp;
while(getline(istr, tmp)){
std::string::const_iterator p, q = tmp.begin(), end = tmp.end();
while((p = find_if(q, end, isdigit)) != end){//查看该行是否还有数字
q = find_if_not(p, end, isdigit);//查找最后一个不是数字的位置
std::cout<<stoul(tmp.substr(distance(tmp.cbegin(), p), distance(p, q)))<<" ";//将p~q的字串转化为数字
}
}
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
追问
这样对这个例子来说是可以了!不过我碰到的实际情况是两个数字之间有不固定的字符,不知道这样的情况怎么解决?
追答
那你就把实际文件内容发上来,你这样来问,谁知道怎么处理
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询